Java工程中读取resources目录下properties文件的几种方法

简介: 本文主要介绍了几种读取工程resources目录下properties文件的方法以及注意事项,实际开发中可以根据自己的需要选择合适的方式。

一、背景介绍

在实际开发过程中经常遇到需要读取工程目录下resources文件夹下配置文件的情况。本文主要介绍几种读取该目录下配置文件的方法,以便于在实际项目中可以灵活选用。本文主要介绍相对路径下的目录中配置文件的读取方法。现存在如下这样的工程目录:

image.png

二、具体读取方法

1、当需要读取当前路径下的properties文件时,即在本地没有部署到具体服务器上的情况:

File file = new File("src/main/resources/test.properties");
InputStream in = new FileInputStream(file);

2、当工程以war或者jar的形式部署到服务器后,在需要读取对应properties文件情况下,此时应该采取相对路径的读取方法。以下为采用流的方式进行读取。

image.png


从上图可知,当工程部署在服务器下时,配置文件以及代码都是在对应的classes文件夹下

InputStream in = this.getClass().getResourceAsStream("/test.properties");
Properties props = new Properties();
InputStreamReader inputStreamReader = new InputStreamReader(in, "UTF-8");
props.load(inputStreamReader);

采用此种流的方式进行读取后,通过props.getProperty(key)的方式获取配置文件中key所对应的value的值。


3、我们也可以采用注解的方式进行配置文件读取,在springboot工程中不需要在spring配置文件中做相应的配置,可以直接使用该注解获取配置文件中key值对应的value值。

@Value("${local.server.port}")// 注入端口号
private int port;

注意:当value出现中文时,会出现注入的值为乱码的现象。原因是在SpringBoot自动加载application.properties时默认采用unicode编码方式。解决办法如下所示:

@RestController
@RequestMapping(value = "/redis")
@PropertySource(value = {"classpath:application.properties"},encoding="utf-8") 
public class UserController extends BaseController{
    @Autowired
    IUserService userService;
    @Autowired
    IRedisService redisService;
    @Value("${amchine.ip}")
    private String ip;
    }

三、总结

本文主要介绍了几种读取工程resources目录下properties文件的方法以及注意事项,实际开发中可以根据自己的需要选择合适的方式。

相关文章
|
1天前
|
移动开发 前端开发 Java
STS里的java 工程项目名称修改和目录设置成源代码
STS里的java 工程项目名称修改和目录设置成源代码
|
2天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
8 0
|
2天前
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
|
2天前
|
存储 Java API
掌握8条方法设计规则,设计优雅健壮的Java方法
掌握8条方法设计规则,设计优雅健壮的Java方法
|
3天前
|
Java C语言
详解java方法与递归
详解java方法与递归
9 3
|
3天前
|
Java
JDK环境下利用记事本对java文件进行运行编译
JDK环境下利用记事本对java文件进行运行编译
9 0
|
3天前
|
SQL Java 数据库连接
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
9 0
|
4天前
|
Java
Java一分钟之-方法定义与调用基础
【5月更文挑战第8天】本文介绍了Java编程中的方法定义和调用,包括基本结构、常见问题和避免策略。方法定义涉及返回类型、参数列表和方法体,易错点有返回类型不匹配、参数错误和忘记返回值。在方法调用时,要注意参数传递、静态与非静态方法的区分,以及重载方法的调用。避免错误的策略包括明确返回类型、参数校验、理解值传递、区分静态和非静态方法以及合理利用重载。通过学习和实践,可以提升编写清晰、可维护代码的能力。
13 0
|
5天前
|
Arthas 安全 Java
java服务报错 FileNotFoundException:打开的文件过多
java服务报错 FileNotFoundException:打开的文件过多
14 0
|
6天前
|
搜索推荐 Java Shell
8大Java排序方法(由简入繁),有代码详解和原理指导
8大Java排序方法(由简入繁),有代码详解和原理指导
29 0