** 1、Properties简介:**
- java.util.Properties集合 extends HashTable<k,V> implements Map<k,v>
-
Properties 类表示了一个持久的属性集。Properties可保存在流中或从流中加载。
-
Properties集合是一个唯一和IO流相结合的集合
-
可以使用Propeerties集合中的方法store,把集合中的历史数据,持久化到硬盘中,
-
也可以使用Properties集合中的方法load,把硬盘中的文件中的数据(<k,v>)读取到集合中使用
- 属性列表中的每个键及其对应值都是一个字符串。
- Properties集合是一个双列集合,key和value默认都是字符串
** 2、使用Properties存储数据,**
- Properties集合中特有的处理数据的方法;
- Object setProperty(String key,String value) : 设置数据,默认键 值都是字符串类型相当于Map集合中的put方法;
- String getProperty(String key) : 通过key获取集合中的值,键和键对应的值都是字符串类型,相当于Map集合中的get方法
- Set stringPropertyNames() : 获取集合中的所有键的集,相当于Map集合中的keySet方法
代码实现:
//创建Properties结合
Properties p = new Properties();
//添加数据
p.setProperty("刘女士","25岁");
p.setProperty("张先生","37岁");
p.setProperty("王小姐","21岁");
p.setProperty("古先生","20岁");
p.setProperty("钱大叔","50岁");
//获取集合的键的集
Set<String> set = p.stringPropertyNames();
//遍历获取键对应的value值
for ( String s: set) {
System.out.println(s + " 今年 "+ p.getProperty(s));
}
- 3、使用字节/字符流对象和Properties集合,持久化数据到磁盘文件中
- 1、创建一个Properties集合并添加数据;
- 2、创建一个字节/字符流输出对象,指定输出到的文件;
- 3、Properties调用store(… , …)方法,将字节流/字符流对象作为参数传进去;
- 4、释放资源。
Propertis集合数据持久化存储代码实现:
//使用store方法将集合中的数据持久化到磁盘文件中
//FileOutputStream只能写入字节,一般含有中文的不使用此输出流
//FileOutputStream os = new FileOutputStream("MyBatis01\\Properties.properties");
FileWriter fw = new FileWriter("MyBatis01\\Properties.properties");
p.store(fw,"save Properties");
//释放资源
fw.close();
* #save Properties
* 古先生=20岁
* 张先生=37岁
* 王小姐=21岁
* 钱大叔=50岁
* 刘女士=25岁
- 4、Properties集合读取文件中的键值对数据:
- 调用的方法:load(InputStream inStream) 字节文件输入流读取
- load(Reader reader) 字符文件输入流读取
- 实现步骤:
- 1、创建Properties对象;
- 2、创建文件字节/字符输入流对象,并制定读取的目的文件
- 3、Properties对象调用load(…)方法,将创建的字节/字符输入流对象作为参数传递,读取文件中的数据到Properties集合中;
- 4、释放资源。
- 文件读取的注意事项:
- 1、存储键值对的文件中,键与值之间的链接符号一般是 = ,空格,(也可以使用其他符号);
- 2、存储键值对的文件中,可以使用# 对数据进行注释,备注的数据在读取时会忽略,不读取;
- 3、存储键值对的文件中,键和值默认都是字符串类型,不用特别加引号
数据读取到Properties集合中代码实现:
//读取properties.properties文件中的数据到Properties集合中
Properties pp = new Properties();
FileReader fr = new FileReader("MyBatis01\\Properties.properties");
pp.load(fr); //读取文件
fr.close(); //释放资源
//遍历读取到集合中的数据
Set<String> s = pp.stringPropertyNames();
for (String str: s) {
System.out.println(str +" 今年 "+pp.getProperty(str));
}
* 注释古先生的数据之后读取的结果:
*
* 张先生 今年 37岁
* 王小姐 今年 21岁
* 钱大叔 今年 50岁
* 刘女士 今年 25岁