Properties【重点详解】
一. 引言&概述
为什么要用Properties:为了更专业地保存程序的配置信息。
配置信息:程序运行时必须要信息 程序A: 用户名=zhangsan 密码=xxxx IP=192.168.36.11 权限=管理员 码表=utf-8
Properties 类表示了一个持久的属性集,可以和Map集合一样存储键值对(HashMap)
持久: 把数据从内存中保存到硬盘上 Key value 都是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<String> 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();输出流:扩展名 .propertiesstore(输出流对象,”说明信息”);输入流load(输入流对象)字节流: 写出,任何流都能读【建议】字符流:写出,仅能字符流 |
---|
请给努力中的自己点个赞哦!
每天进步一点点`~~~~~
来源:oschina
链接:https://my.oschina.net/ithuang/blog/3211520