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文件的内容。