JavaIO流_Properties类
Properties文件
- 后缀properties是一种属性文件。
- 这种文件以key=value格式存储内容
- Java中可以使用Properties类来读取这个文件
为什么要使用Properties文件?
在这个文件里面定义这些变量的值,在程序里面可以调用这些变量,好处就是,如果程序中的参数值需要变动,直接来改这个.property文件就可以了,不用在去修改源代码。
优点在于有利于你以后的代码重构,维护方便
为什么要使用Properties类?
- 先建立一个mysql.properties文件
ip = 192.168.0.13
user = root
pwd = 12345
- 如果用bufferedReader处理流来解决文件读取和传输的话,会很麻烦
private static String filePath = "C:\\Users\\Laity\\Desktop\\Java全栈\\JavaIO\\Test文件\\mysql.properties";
//麻烦的读取方式
public static void bufRead() throws IOException {
BufferedReader buf1 = new BufferedReader(new FileReader(filePath));
String line = "";
while((line = buf1.readLine())!=null){
System.out.println(line);
}
System.out.println("read success...");
buf1.close();
}
引出了Properties类和方法
- load:加载配置文件的键值对到Properties对象
- list:将数据显示到指定的设备
- getProperty(key):根据键获取值
- setProperty(key,value):设置键值对到Properties对象
- store:将Properties中的键值对存储到配置文件,在idea中,保存信息到配置文件,如果含有中文,会存储为unicode码
- 用字节流的话中文会变成unicode码
public static void main(String[] args) throws IOException {
//testProperties01.bufRead();
//创建一个Properties类
Properties properties = new Properties();
//将指定Properties文件加载到类中,参数是FileReader
properties.load(new FileReader(filePath));
//将所有的键值对输出到指定路径/设备中,参数是PrintWrite或PrintStream
properties.list(System.out);//用的是PrintStream的子类,标准输出类
//通过键获取相应的值
System.out.println("用户名:"+properties.getProperty("user"));
System.out.println("==========");
//创建或覆盖键值对
properties.setProperty("user","wjs");
System.out.println("用户名:"+properties.getProperty("user"));
//将类返回到文件中,第二个参数代表一个注释
properties.store(new FileWriter(filePath),null);
}