背景
Java开发过程当中,需要将一些易变的配置参数设置在xml文件或许是properties配置文件当中。然而xml文件需要通过DOM或SAX方式解析,而读取properties配置文件就比较容易。下面介绍几种方式。
方法一:基于ClassLoader读取配置文件
目录结构:
代码实现:
public static void ClassLoader() throws IOException {
URLresource = LoadProperties.class.getClassLoader().getResource("");
System.out.println(resource);
InputStream resourceAsStream = LoadProperties.class.getClassLoader().getResourceAsStream("config/config.properties");
Properties properties = new Properties();
properties.load(resourceAsStream);
for (Map.Entry<Object,Object> entry : properties.entrySet()) {
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + " " + value);
}
输出结果:
file:/E:/IDEA/JavaBase/out/production/IOStream/
password 123456
username mysql
这种方式加载虽然简单,但是存在局限,就是配置文件必须在类路径下。
方法二:基于InputStream读取配置文件
代码实现:
public static void InputStreamLoader() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader("E:" + File.separator +"config.properties"));
Properties properties = new Properties();
properties.load(bufferedReader);
for (Map.Entry<Object, Object> entry : properties.entrySet()) {
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + " " + value);
}
}
输出样例:
password 123456
username mysql
优点:这种方式的优点是可以读取任意路径下的配置文件。这种实现方法是很万能的,因为配置文件可以在任何地方。
方法三:java.util.ResourceBundle 类读取
目录结构:
代码样例:
public static void ResourceBundleLoader() throws IOException {
//方式一:直接从src文件下获取
ResourceBundle bundle = ResourceBundle.getBundle("config");
for (String s : bundle.keySet()) {
System.out.println(s + " " + bundle.getString(s));
}
//方式二;从执行的包下获取配置文件
StringBuffer buffer = new StringBuffer().append("com").append(File.separator)
.append("test").append(File.separator).append("config").append(File.separator).append("config");
bundle = ResourceBundle.getBundle(buffer.toString());
for (String s : bundle.keySet()) {
System.out.println(s + " " + bundle.getString(s));
}
}
注意:
对路径的设置问题:
1、ResourceBundle获取配置文件的时候,文件名称不用加.properties
后缀。
2、如果配置文件在当前类所在的包下,那么需要使用包名进行限定,比如说com.test.config
包下的config.properties
文件,那么需要使用com\test\config\config
路径,使用ResourceBundle来获取配置文件。
3、如果文件在src目录下,那么直接使用config
名来获取。