* java.util.Properties集合 继承 Hashtable
* Properties集合的健和值默认都是字符串
* Properties集合是唯一一个和IO流相结合的集合,可以把集合中的临时数据持久化存储
*
* Properties集合中特有的方法:
* 构造方法:
* Properties()
* 成员方法:
* Object setProperty(String key, String value) 往Properties集合中添加数据,调用 Hashtable 的方法 put。
* 返回值:如果key不重复,返回的是null,如果key重复,返回的是被替换的value值
* String getProperty(String key) 根据健,查找值 相当于Map中的get(key)方法
* 返回值:如果有对应的健,则返回键对应的值,如果没有对应的健,则返回null
* Set<String> stringPropertyNames() 返回此属性列表中的键集 相当于Map集合中的keySet方法
*
* 和流相结合的方法:
* void store(OutputStream out, String comments)
* void store(Writer writer, String comments)
* 作用:把集合中的数据,用方法中传递的流以键值对的方式写入到文件中(临时存储(集合中)-->持久化(文件中))
* 参数:
* OutputStream:以字节的方式写入
* Writer:以字符的方式写入
* comments:注释,说明写的文件内容,不建议使用中文,会查询Unicode编码表,一般使用""
*
* void load(InputStream inStream)
* void load(Reader reader)
* 作用:把文件中保存的键值对,以构造方法中的流读取到集合中 (持久化(文件中)-->临时存储(集合中)-)
* 参数:
* InputStream:一次读取一个字节
* Reader:一次读取一个字符
* 注意:如果操作的数据中有中文,需要使用字符流
*
*/
/*
* 使用store方法把集合中的数据,持久化到文件中
*/
private static void storeIoData() throws IOException {
Properties pp = new Properties();
pp.put("name", "张三");
pp.put("age", "12");
// 字节流
// FileOutputStream fos = new FileOutputStream("project.properties");
// 字符流
FileWriter fw = new FileWriter("project.properties");
pp.store(fw, "explanation");
fw.close();
}
/*
* 使用load方法,把文件中的键值对,读取到集合中
* 注意:
* 在Properties文件中,使用注释的格式是一个井号#
* 文件中一行结束,不要使用;会当成值的一部分
*/
private static void loadIoData() throws IOException {
Properties pp = new Properties();
FileReader fr = new FileReader("project.properties");
pp.load(fr);
fr.close();
// 第一种遍历 pp.stringPropertyNames()
Set<String> propertyNames = pp.stringPropertyNames();
for (String str : propertyNames) {
System.out.println(str + " : " + pp.getProperty(str));
}
// 第二种遍历pp.keySet()
Set<Object> keySet = pp.keySet();
for (Object obj : keySet) {
System.out.println(obj + " : " + pp.get(obj));
}
}