* 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));
}
}