/** 步骤:
1.创建配置文件->properties
存的信息键值对的形式
如果将配置文件放在src下面,idea生成的out目录中这个配置文件会显示在out的项目路径下
我们给用户class文件的时候,也需要把配置文件给用户,不然项目无法读取配置文件中的信息,也就无法执行
src 存放的是源代码 编译后产生的class文件,同步的,但是生成的out路径,下没有src这个目录,以为src存放源代码的
问题:如何读取src目录下的文件?
直接new FileInputStream(模块名\\src\\配置文件名)是不行的
因为这样写,而我们给的用户是out下的资源,而out下存放的class文件路径是没有src
所以这样写,给了用户,用户一使用,直接就读不到这个配置文件了
解决:
使用类的加载器
ClassLoader类定义方法
InputStream getResourceAsStream("直接写文件名")返回一个字节输入流
此流会自动从类目录下扫描文件读取 ->直接扫描src下的配置文件
2.利用IO流读取配置文件
读到Properties集合中
3.获取Properties中对应的值
获取类的全限定名
方法名
4.利用反射获取类的Class对象
利用反射去指定方法*/
public class Demo_pro {
public static void main(String[] args) throws Exception {
//获取类加载器
ClassLoader classLoader = Demo_pro.class.getClassLoader();
//使用类加载器的输入流读取配置文件
InputStream resourceAsStream = classLoader.getResourceAsStream("pro.properties");
//创建Properties集合
Properties properties = new Properties();
properties.load(resourceAsStream);
//获取配置文件中的值
String className = properties.getProperty("className");
String show_method = properties.getProperty("methodName");
System.out.println(show_method);
//根据获取出来的className创建Student的Class对象
Class aClass = Class.forName(className);
//获取有参构造方法
Constructor constructor = aClass.getConstructor(String.class, int.class);
//创建Student对象
Object o = constructor.newInstance("yutan", 25);
//根据从配置文件中解析出来的方法名去获取Student中的方法
Method method = aClass.getMethod(show_method);
//执行方法
method.invoke(o);
}
}
反射练习(编写一个小框架)-解析配置文件中的信息
最新推荐文章于 2022-05-03 12:51:34 发布