Java-Properties

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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章