以下是讲解“java加载properties文件的六种方法总结”的完整攻略。
一、背景
在Java应用中经常会使用配置文件properties来存储一些固定的配置信息,方便程序在运行时读取。那么在Java中如何加载properties文件呢?本文将总结6种Java加载properties文件的方法。
二、直接使用Java代码加载
直接使用Java代码加载properties文件,方法如下:
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("config.properties");
Properties properties = new Properties();
properties.load(inputStream);
这段代码可以直接通过类加载器获取到文件路径,然后通过Properties对象读取properties文件内容。这种方法可以在代码中自己定义properties文件路径,适用性比较广。
三、通过ClassLoader加载properties文件
可以通过ClassLoader来加载properties文件,方法如下:
InputStream inputStream = ClassLoader.getSystemResourceAsStream("config.properties");
Properties properties = new Properties();
properties.load(inputStream);
这种方法与方法二类似,都是通过类加载器来读取文件。只是这种方法使用的是系统默认的ClassLoader,可以保证在JVM中只有一个ClassLoader实例,不同线程的加载操作不会相互干扰。
四、通过Class.getResourceAsStream()加载properties文件
可以通过Class.getResourceAsStream()方法来加载properties文件,方法如下:
InputStream inputStream = this.getClass().getResourceAsStream("/config.properties");
Properties properties = new Properties();
properties.load(inputStream);
这种方法可以直接以相对路径20的方式读取文件内容,不需要指定具体的路径。并且可以保证在不同的Class实例中加载的资源不会相互影响。
五、通过Class.getResource()加载properties文件
与方法四类似,也可以通过Class.getResource()方法来加载properties文件,方法如下:
URL url = this.getClass().getResource("/config.properties");
InputStream inputStream = new FileInputStream(new File(url.getPath()));
Properties properties = new Properties();
properties.load(inputStream);
通过Class.getResource()返回的是一个URL对象,可以通过这个对象获取到文件的具体路径,然后再通过FileInputStream来读取文件内容。
六、通过ClassLoader的getResource()或getResourceAsStream()加载properties文件
也可以通过ClassLoader的getResource()或getResourceAsStream()方法来加载properties文件,方法如下:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("config.properties");
Properties properties = new Properties();
properties.load(inputStream);
这种方法可以保证ClassLoader的使用范围更广,可以在不同的类加载器实例中使用。
七、总结
这篇文章总结了Java加载properties文件的六种方式,每种方式都有自己的优缺点。在具体使用时可以根据实际情况选择不同的方式。
以下是两个使用方法的示例。
示例一
/* 读取src目录下的hello.properties文件 */
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class LoadProperties {
public static void main(String[] args) throws IOException {
InputStream inputStream = LoadProperties.class.getClassLoader().getResourceAsStream("hello.properties");
Properties properties = new Properties();
properties.load(inputStream);
System.out.println(properties.getProperty("name"));
System.out.println(properties.getProperty("age"));
System.out.println(properties.getProperty("sex"));
}
}
示例二
/* 读取config.properties文件,使用getResource() */
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
public class LoadProperties {
public static void main(String[] args) throws IOException {
URL url = LoadProperties.class.getResource("/config.properties");
InputStream inputStream = new FileInputStream(new File(url.getPath()));
Properties properties = new Properties();
properties.load(inputStream);
System.out.println(properties.getProperty("name"));
System.out.println(properties.getProperty("age"));
System.out.println(properties.getProperty("sex"));
}
}
希望这篇文章能够帮助大家更好地使用Java加载properties文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java加载properties文件的六种方法总结 - Python技术站