获取配置信息
获取配置信息
先得到绝对路径,再获取流
以下代码通过绝对路径读配置文件来获取配置信息:
package com.javalearn.reflect.path;
import java.io.FileReader;
import java.util.Properties;
public class TestForPath {
public static void main(String[] args) throws Exception{ // 文件须在src文件夹内,文件内容为className=com.javalearn.reflect.realize.User
String path = Thread.currentThread().getContextClassLoader().getResource("file1.properties").getPath(); // 获取绝对路径
FileReader reader = new FileReader(path); // 读文件
Properties pro = new Properties();
pro.load(reader);
reader.close();
String className = pro.getProperty("className"); // 获取配置信息
System.out.println(className);
}
}
输出结果:
com.javalearn.reflect.realize.User
直接以流的形式返回
以下代码对上面的代码稍作修改,通过流的形式返回文件内容:
package com.javalearn.reflect.path;
import java.io.FileReader;
import java.io.InputStream;
import java.util.Properties;
public class TestForPath {
public static void main(String[] args) throws Exception{ // 文件须在src文件夹内
InputStream reader = Thread.currentThread().getContextClassLoader().getResourceAsStream("file1.properties"); // 原来是先从文件名获得绝对路径,然后获取流,现在从文件名直接获得流
Properties pro = new Properties();
pro.load(reader);
reader.close();
String className = pro.getProperty("className"); // 获取配置信息
System.out.println(className);
}
}
输出结果:
com.javalearn.reflect.realize.User
资源绑定器
以下代码使用资源绑定器来获取配置信息,无需IO流:
package com.javalearn.reflect.bundle;
import java.util.ResourceBundle;
public class TestForBundle {
public static void main(String[] args) {
ResourceBundle bundle = ResourceBundle.getBundle("file1"); // 文件必须在src文件中,扩展名必须为.properties,无需写扩展名
String className = bundle.getString("className");
System.out.println(className);
}
}
输出结果:
com.javalearn.reflect.realize.User