首先创建一个名为dbinfo的文件数据如下:
代码如下:
// io类和properties(属性对象)读取配置文件
//配置文件可以使程序更加灵活
//一般在java中可变的东西不要写死,推荐写到配置文件中
//配置文件可以使运行相同的程序时可以得到不同的结果
//像dbinfo这样一个具有特殊内容的配置文件我们又称为属性文件
//java规范中要求属性文件以“.Properties”结尾
//属性文件分割符:"=" ":" "空格" ,用于区分“key”和"value" 如果存在多个分隔符,以第一个为准
import java.io.*;
import java.util.*;
public class Test{
public sattic void main(String[] args) throws Exception{
//创建属性对象
Properties p = new Properties();//和Map一样,只不过key和value只能存字符串类型
//key不能重复,重复则覆盖value
//创建输入流
FileInputStream fis =new FileInputStream("dbinfo"); //文件路径
//将fis流中所有数据加载到属性对象中
p.load(fis); //现在属性对象中有(key=driver,value =jbdc:oracle....)
//关闭流
fis.close();
//通过key获取value
String v1 = p.getProperty("driver");
String v2 = p.getProperty("url");
String v3 = p.getProperty("username"); //scott
String v4 = p.getProperty("password"); //tiger
//这里key已经在java文件中写死,不可以修改,但是value值可以修改,而且不用重写编辑java文件,只需要在
//配置文件中修改value
}
}
利用反射机制创建对象
//使用IO类,Property和反射机制动态创建java对象
//优点:由于类名写在配置文件中,可以方便的更改创建的实例对象,并且不需要重新编译源文件
首先在当前目录下创建一个名为classInfo.Properties的文件
文件内容是: ClassName = java.util.Date
//代码:
import java.io.*;
import java.util.*;
public class Test{
public static void main(String[] args) throws Exception{ //简单处理异常
//创建属性对象
Properties p = new Properties();
//创建字符流
FileReader fr = new FileReader("classInfo.Properties")//相对路径
//加载
p.load(fr);
fr.close();
//通过上面文件的key获取value
String className = p.getProperty("ClassName"); 字符变量classname指向"java.util.Date"
//通过反射机制创建实例对象
Class c = Class.forName(className);
//创建对象
Object o = c.newInstance();
System.out.println(o); //输出当前时间
}
}片