Properties【重点详解】
一. 引言&概述
为什么要用Properties:为了更专业地保存程序的配置信息。
配置信息:程序运行时必须要信息
程序A:
用户名=zhangsan
密码=xxxx
IP=192.168.36.11
权限=管理员
码表=utf-8
Properties 类表示了一个持久的属性集,可以和Map集合一样存储键值对(HashMap)
持久: 把数据从内存中保存到硬盘上
Keyvalue都是String
二. 入门案例:添加键值对
Properties 把数据持久保存在硬盘上。
相当于HashMap,无序,有key value,key和value都是String
/*
* 入门案例:为Properties添加键值对
* HashMap
* */
@Test
public void run1(){
//1、创建对象 key value都是String
Properties p = new Properties();
//2、添加键值对
//2.1、添加键值对:setProperty(key,value) 相当于map put(key,value) ,效果相同
p.setProperty("k1","v1");
p.setProperty("k2","v2");
p.setProperty("k2","v3");
//2.2、获取键值对:getProperty(key) 相当于map get(key),效果相同
String k2 = p.getProperty("k2");
System.out.println(k2);
System.out.println(p);
//3、遍历
//3.1、把Properties,变成Set集合 集合中保存的是所有的key
Set set = p.stringPropertyNames();
//3.2、遍历Set集合
for (String key : set) {
System.out.println(key+"----------"+p.getProperty(key));
}
}
三. 进阶案例1:写出数据操作-字节流
为了写出配置文件
/*
* 向Properties中保存键值对,把键值对写出成为配置文件
* 字节:万能
* 字符
* */
@Test
public void run1() throws Exception {
//1、创建Properties对象,保存数据
Properties p = new Properties();
p.setProperty("name","大哥");
p.setProperty("sex","纯爷们");
p.setProperty("age","18");
//2、创建输出流对象 扩展名必须是:.properties
FileOutputStream fos = new FileOutputStream("pd.properties");
//3、写出文件 :store 存储
p.store(fos,"这是大哥的信息");
//4、关流
fos.close();
}
四. 进阶案例2:读取数据操作-字节流
为了读取配置文件
/*
* 从Properties文件中读取数据
* */
@Test
public void run2() throws Exception {
//1、创建Properties对象(准备读取数据)
Properties p = new Properties();
//2、创建输入流, 读取的文件扩展名必须是:.properties
FileInputStream fis = new FileInputStream("pd.properties");
//3、读取 load 加载/读取
p.load(fis);
System.out.println(p);
//4、关流
fis.close();
}
五. 进阶案例3:字节流字符流对比
用字节流写出:
/*
* 用字符流读
* */
@Test
public void run3() throws Exception {
//1、创建Properties对象(准备读取数据)
Properties p = new Properties();
//2、创建输入流, 读取的文件扩展名必须是:.properties
FileReader fr = new FileReader("字节流.properties");
//3、读取 load 加载/读取
p.load(fr);
System.out.println(p);
//4、关流
fr.close();
}
/*
* 用字节流读
* */
@Test
public void run2() throws Exception {
//1、创建Properties对象(准备读取数据)
Properties p = new Properties();
//2、创建输入流, 读取的文件扩展名必须是:.properties
FileInputStream fis = new FileInputStream("字节流.properties");
//3、读取 load 加载/读取
p.load(fis);
System.out.println(p);
//4、关流
fis.close();
}
/*
* 用字节流写出
* */
@Test
public void run1() throws Exception {
//1、创建Properties对象,保存数据
Properties p = new Properties();
p.setProperty("name","大哥");
p.setProperty("sex","纯爷们");
//2、创建输出流对象 扩展名必须是:.properties
FileOutputStream fos = new FileOutputStream("字节流.properties");
//3、写出文件 :store 存储
p.store(fos,"这是大哥的信息");
//4、关流
fos.close();
}
用字符流写出:
/*
* 用字符流读
* */
@Test
public void run3() throws Exception {
//1、创建Properties对象(准备读取数据)
Properties p = new Properties();
//2、创建输入流, 读取的文件扩展名必须是:.properties
FileReader fr = new FileReader("字符流.properties");
//3、读取 load 加载/读取
p.load(fr);
System.out.println(p);
//4、关流
fr.close();
}
/*
* 用字节流读
* */
@Test
public void run2() throws Exception {
//1、创建Properties对象(准备读取数据)
Properties p = new Properties();
//2、创建输入流, 读取的文件扩展名必须是:.properties
FileInputStream fis = new FileInputStream("字符流.properties");
//3、读取 load 加载/读取
p.load(fis);
System.out.println(p);
//4、关流
fis.close();
}
/*
* 用字符流写出
* */
@Test
public void run1() throws Exception {
//1、创建Properties对象,保存数据
Properties p = new Properties();
p.setProperty("name","大哥");
p.setProperty("sex","纯爷们");
//2、创建输出流对象 扩展名必须是:.properties
FileWriter fw = new FileWriter("字符流.properties");
//3、写出文件 :store 存储
p.store(fw,"这是大哥的信息");
//4、关流
fw.close();
}
字节流写出的文件,用字节流或字符流都可以读取
字符流写出的文件,仅能用字符流读取(字节流乱码)
建议:用字节流,读取和写出
六. IDEA创建Properties文件
今日总结:
Properties: 进行持久化保存数据的集合。 (HashMap)
持久化:把内存数据保存到硬盘上。
Key和value 都是 String字符串
setProperties(key,value); map.put(key,value)
getProperties(key); map.get(key)
stringPropertyNames(); map.keySet();
输出流:扩展名 .properties
store(输出流对象,”说明信息”);
输入流
load(输入流对象)
字节流: 写出,任何流都能读【建议】
字符流:写出,仅能字符流
请给努力中的自己点个赞哦!
每天进步一点点`~~~~~