读取properties文件的6种方式,建议收藏!

1. 前言

properties文件是Java中一个非常常见的配置文件,通过在Java项目中配置properties文件可以方便地管理项目中的各种配置信息。在Java中,我们可以通过多种方式读取properties文件,本文将介绍6种常用的读取properties文件的方法,不管您是初学者还是有一定经验的Java开发人员,这篇文章都会为您提供帮助。

2. 使用ClassLoader获取资源文件

2.1 getClassLoader方法

在Java中,我们可以使用ClassLoader类中的方法获取properties文件。先来看一下获取ClassLoader的两种方法:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

ClassLoader classLoader = ClassLoader.getSystemClassLoader();

第一种方法是获取当前线程的上下文ClassLoader,第二种方法是获取系统的ClassLoader。一般情况下,我们使用第一种方法即可。

2.2 getResourceAsStream方法

接下来,我们需要使用ClassLoader获取资源文件。具体方法如下:

InputStream inputStream = classLoader.getResourceAsStream("config.properties");

其中,config.properties是我们要读取的文件名。getResourceAsStream方法返回值类型为InputStream,可以通过读取这个InputStream来获取配置文件的内容。

2.3 读取文件内容

最后,我们需要读取输入流中的内容,实现代码如下:

Properties properties = new Properties();

properties.load(inputStream);

load方法会将输入流中的内容加载到Properties对象中,这样我们就可以方便地获取到properties文件中的内容了。

3. 使用FileInputStream获取资源文件

3.1 基本方法

除了使用ClassLoader获取资源文件,我们还可以使用FileInputStream类来读取文件。具体代码如下:

InputStream inputStream = new FileInputStream(new File("config.properties"));

Properties properties = new Properties();

properties.load(inputStream);

这里直接使用FileInputStream类的构造方法来读取文件,需要传入一个File对象来指定要读取的文件。另外,其他部分的代码与使用ClassLoader获取资源文件的方法是一样的。

3.2 使用绝对路径

除了使用相对路径读取文件,我们还可以使用绝对路径来读取文件。具体代码如下:

String path = "/Users/user/workspace/config.properties";

InputStream inputStream = new FileInputStream(new File(path));

Properties properties = new Properties();

properties.load(inputStream);

这里直接使用了一个绝对路径,需要根据实际情况修改路径。

4. 使用getResourceBundle获取资源文件

4.1 基本方法

getResourceBundle方法可以读取多种类型的文件,包括.properties和.xml文件。具体代码如下:

ResourceBundle resourceBundle = ResourceBundle.getBundle("config");

Properties properties = new Properties();

for (String key : resourceBundle.keySet()) {

properties.put(key, resourceBundle.getString(key));

}

这里使用了getBundle方法来获取资源文件,方法参数是文件名,不需要加后缀名。getResourceBundle方法会自动根据默认的ResourceBundle.Control类来读取文件(一般情况下默认的Control类就够用了),然后返回一个ResourceBundle对象。最后,将ResourceBundle中的内容转换成Properties对象即可。

4.2 使用指定的Locale

getResourceBundle方法还可以让我们指定Locale来读取资源文件。Locale可以用来表示语言和国家/地区,不同Language和地区对应的资源文件也不同,通过Locale的指定,我们可以读取到相应的资源文件。这里示例代码如下:

Locale locale = Locale.US;

ResourceBundle resourceBundle = ResourceBundle.getBundle("config", locale);

Properties properties = new Properties();

for (String key : resourceBundle.keySet()) {

properties.put(key, resourceBundle.getString(key));

}

这里指定了Locale.US作为Language和地区,就会读取到config_en_US.properties文件,如果指定了Locale.CHINA,就会读取到config_zh_CN.properties文件。

5. 使用Properties类自带方法获取资源文件

5.1 基本方法

Properties类是Java中专门用来读取和写入.properties文件的一个类,其中就自带了读取文件的方法,具体代码如下:

Properties properties = new Properties();

InputStream inputStream = new FileInputStream(new File("config.properties"));

properties.load(inputStream);

这里直接使用了Properties类自带的方法load来读取文件,需要传入一个文件的InputStream对象。load方法会自动将输入流中的数据读取到Properties对象中。

5.2 使用ClassLoader获取资源文件

除了使用FileInputStream类,我们还可以使用ClassLoader来获取输入流,实现代码如下:

Properties properties = new Properties();

InputStream inputStream = getClass().getClassLoader().getResourceAsStream("config.properties");

properties.load(inputStream);

这里使用了getClassLoader方法来获取ClassLoader对象,然后直接调用getResourceAsStream方法来获取输入流,最后将输入流中的数据读取到Properties对象中。

6. 结语

到此,我们介绍了6种读取.properties文件的方法。虽然每种方法的实现代码不尽相同,但是它们的作用都是相同的,都是为了读取.properties文件中的信息,方便地管理Java项目中的各种配置信息。在实际开发中可以根据项目需求和个人喜好来选择适合的方法,这样可以方便地管理.properties文件的内容。

后端开发标签