package reflect;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 我们使用反射来读取配置文件的信息
*/
public class Reflect {
public static void main(String[] args) {
//1.加载配置文件创建配置文件的对象
Properties pro = new Properties();
//方法一:
//2.获取class目录下(即src下的配置文件) 先从自身这个类找到src下的server.properties 在将其转化为输入流
ClassLoader classLoader = Reflect.class.getClassLoader();
InputStream is = classLoader.getResourceAsStream("server.properties");
try {
//3.读取配置文件
pro.load(is);
//4.根据key获得value*/
System.out.println(pro.getProperty("url"));
} catch (IOException e) {
e.printStackTrace();
}
//方法二: 其实都一样
try {
pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("server.properties"));
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(pro.getProperty("url"));
}
}
封装成工具类
package com.qq.util;
import java.io.IOException;
import java.util.Properties;
/**
* 读取Server.properties中的相关信息
* @author wangtong
*
*/
public class PropertiesUtils {
public static final String FILENAME ="server.properties";
private static Properties pro = new Properties();
//我们使用静态代码块来初始化 pro 只需要初始化一次 所以我们使用静态代码块
static {
//我们这个方法需要一个输入流 我们使用当前想乘类加载器来获得转化为输入流
try {
pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(FILENAME));
} catch (IOException e) {
System.out.println("读取FILENAME出现异常");
e.printStackTrace();
}
}
/**
* 根据key 读value
*/
public static String readPro (String key) {
return pro.getProperty(key);
}
}