--- title: Java SE笔记: 反射和Properties date: 2016-09-19 21:30:00 updated: 2016-09-19 21:30:00 description: "反射和Properties" categories: [个人笔记] tags: [Java, Java SE笔记] --- ### properties配置文件 dbinfo.properties文件中的内容: ```properties driver oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@192.168.1.100:1521:bjpowernode username:\u5f20\u4e09 password=tiger ``` dbinfo这样的文件我们称作配置文件, 配置的文件的作用就是:使程序更加灵活。 注意:一般在程序中可变的东西不要写死。推荐写到配置文件中。 运行同样的程序得到不同的结果。 像dbinfo这样一个具有特殊内容的配置文件我们又叫做:属性文件。 `java规范中要求属性文件以“.properties”` 属性文件中数据要求: - key和value之间可以使用“空格”,“冒号”,“等号”。 - 如果“空格”,“等号”,“冒号”都有,按最前的作为分隔符。 ### IO+Properties例子: ```java // 保存配置信息(也可以直接在文件中修改) static void saveProperties() throws IOException { Properties p = new Properties(); // 设置属性 p.setProperty("username", "admin"); p.setProperty("password", "123456"); p.setProperty("ip", "192.168.6.2"); p.store(new FileWriter("e:\\niit\\settings.txt"), null); } // 读取配置信息 static void readProperties() throws FileNotFoundException, IOException { Properties p = new Properties(); p.load(new FileReader("e:\\niit\\settings.txt")); System.out.println(p.getProperty("username")); System.out.println(p.getProperty("password")); System.out.println(p.getProperty("ip")); } ``` ### 反射机制+IO+Properties联合应用,动态创建java对象: 利用这样的方法可以实现构建动态的代码,即代码在运行时进行装配!使代码更加灵活! ```java //1.创建属性对象 Properties p = new Properties(); //2.创建流 FileReader fr = new FileReader("classInfo.properties"); //3.加载 p.load(fr); //4.关闭流 fr.close(); //通过key获取value String className = p.getProperty("className"); //System.out.println(className); //通过反射机制创建对象 Class c = Class.forName(className); //创建对象 Object o = c.newInstance(); System.out.println(o); ``` 该配置文件如下,可以直接在外部修改value的值,产生达到不同效果的代码 classInfo.properties中的内容: ```properties className=User ```