1. 程式人生 > 實用技巧 >Properties集合。使用Properties集合儲存資料,遍歷取出Properties集合中的資料。store與load方法的使用

Properties集合。使用Properties集合儲存資料,遍歷取出Properties集合中的資料。store與load方法的使用

package com.chunzhi.Test07Prop;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;

/*
    java.util.Properties集合 extends Hashtable<k, v> implements Map<k, v>
    Properties類表示了一個持久的屬性集。Properties可儲存在流中或從流中載入。
    Properties集合是一個唯一和IO流相結合的集合。
        可以使用Properties集合中的方法store,把集合中的臨時資料,持久化寫入到硬碟中儲存
        可以使用Properties集合中的方法load,把硬碟中儲存的檔案(鍵值對),讀取到集合中使用

    屬性列表中每個鍵及其對應值都是一個字串
        Properties集合是一個雙列集合,key和value預設都是字串
 
*/ public class Test01Properties { public static void main(String[] args) throws IOException { method03(); } /* 使用Properties集合儲存資料,遍歷取出Properties集合中的資料 Properties集合是一個雙列集合,key和value預設都是字串 Properties集合有一些操作字串的特有方法 Object setProperty(String key, String value):呼叫Hashtable的方法put。 String getProperty(String key):通過key找到value值,此方法相當於Map集合中的get(key)方法 set<String> stringPropertyNames():返回此屬性列表中的鍵集,其中該鍵及其對應值是字串,此方法相當於Map集合中的KeySet方法
*/ private static void method01() { // 建立Properties集合物件 Properties prop = new Properties(); // 使用setProperty新增資料 prop.setProperty("古力娜扎", "22歲"); prop.setProperty("迪麗熱吧", "27歲"); prop.setProperty("高圓圓圓", "26歲"); // 使用stringPropertyNames把Properties集合中的鍵取出,儲存到一個Set集合中
Set<String> set = prop.stringPropertyNames(); // 遍歷Set集合,取出Properties集合的每一個鍵 for (String key : set) { // 使用getProperty方法通過key找到value值 String value = prop.getProperty(key); System.out.println(key + "=" + value); } } /* 可以使用Properties集合中的方法store,把集合中的臨時資料,持久化寫入到硬碟中儲存 void store(OutputStream out, String comments) void store(Write writer, String comments) 引數: OutputStream out:位元組輸出流,不能寫入中文 Write write:字元輸出流,可以寫中文 String comments:註釋,用來解釋說明儲存的檔案是做什麼用的 不能使用中文,會產生亂碼,預設是Unicode編碼 一般使用""空字串 使用步驟: 1.建立Properties集合物件,新增資料 2.建立位元組輸出流/字元輸出流物件,構造方法中繫結要輸出的目的地 3.使用Properties集合中的方法store,把集合中的臨時資料,持久化寫入硬碟中儲存 4.釋放資源 */ private static void method02() throws IOException { // 1.建立Properties集合物件,使用setProperty新增資料 Properties prop = new Properties(); prop.setProperty("古力娜扎", "22歲"); prop.setProperty("迪麗熱巴", "27歲"); prop.setProperty("高圓圓圓", "26歲"); // 2.建立字元輸出流/位元組輸出流物件,構造方法中繫結要輸出的目的地 FileWriter fw = new FileWriter("Day09IOAndProperties\\c.txt"); // 3.使用Properties集合中的方法store,把集合中的臨時資料,持久化寫入到硬碟中儲存 prop.store(fw, "save data"); // 4.釋放資源 fw.close(); /* prop.store(new FileWriter("Day09IOAndProperties\\d.txt"), ""); // 簡便方法,將2、3、4步驟合併:使用匿名物件 */ } /* 可以使用Properties集合中的方法load,把硬碟中儲存的檔案(鍵值對),讀取到集合中使用 void load(InputStream inStream) void load(Reader reader) 引數: InputStream inStream:位元組輸入流,不能讀取含有中文的鍵值對 Reader reader:字元輸入流,能讀取含有中文的鍵值對 使用步驟: 1.建立Properties集合物件 2.使用Properties集合物件中的方法load讀取儲存鍵值對的檔案 3.遍歷Properties集合 注意: 1.儲存鍵值對的檔案中,鍵與值預設的連線符號可以使用=,空格(其他符號) 2.儲存鍵值對的檔案中,可以使用#進行註釋,被註釋的鍵值對不會再被讀取 3.儲存鍵值對的檔案中,鍵與值預設都是字串,不用再加引號 */ private static void method03() throws IOException { // 1.建立Properties集合物件 Properties prop = new Properties(); // 2.使用Properties集合物件中的方法load讀取儲存鍵值對的檔案 FileReader fr = new FileReader("Day09IOAndProperties\\c.txt"); prop.load(fr); // 3.遍歷Properties集合 Set<String> set = prop.stringPropertyNames(); for (String key : set) { String value = prop.getProperty(key); System.out.println(key + "=" + value); } } }