IDEA中读取 properties 文件
-
public class ReflectTest02 { public static void main(String[] args) throws Exception{ //通过IO流读取classinfo.propesties文件 FileReader reader = new FileReader("properties.properties"); //创建属性类对象Map Properties pro = new Properties(); //加载 pro.load(reader); reader.close(); //通过key获取value String calssName = pro.getProperty("className"); System.out.println(calssName); } }
- 以上代码是要在 main 方法中读取配置文件
-
- 此时 properties.properties 文件在 module 中
-
- 这时会报 文件找不到的异常
-
IDEA中
- IDEA中如果使⽤ Junit 中的单元测试⽅法测试,相对路径即为当前 Module 下
- IDEA中如果使⽤ main() ⽅法测试,相对路径即为当前的 Project 下,不是 Project 的 src 下
-
- 将 properties.properties 移动到 Project 下
-
- 成功运行,没有出错
-
需要注意的是:
-
如果我们使用类加载器(ClassLoader)获取流读取文件的默认路径是当前 Module 的 src 目录下
-
public class ReflectFrame { public static void main(String[] args) { try { Properties pro = new Properties();//构建Properties 文件类对象pro Class clazz = ReflectFrame.class;//获取框架类的对象clazz //返回类加载器 ClassLoader classLoader = clazz.getClassLoader(); //classLoader 将ReflectFrame对应的字节码文件加载到内存中 InputStream is = classLoader.getResourceAsStream("properties.properties");//字节输入流 pro.load(is);//加载当前这个配置文件 String className = pro.getProperty("className");//获取全类名 String methodName = pro.getProperty("methodName");//获取方法的名字 Class cls1 = Class.forName(className);//获取Class对象 Object obj = cls1.newInstance();//创建对象 ReflectDemo.Person //invoke()执行 执行哪一个方法 获取方法 根据得到的方法名称 Method method = cls1.getMethod(methodName); method.invoke(obj);//执行方法 } catch (Exception e) { throw new RuntimeException(e); } } }
- 利用类加载器获取流读取配置文件
-
``
* 利用类加载器获取流读取配置文件
- 结果正常输出,证明前面的结论是正确的!