Properties操作指南

來源:互聯網
上載者:User

標籤:

一.簡介:

  Properties是java中用的比較多的一個類,表示一個持久的屬性集。繼承於Hashtable,Properties可從流中載入,也可儲存在流中。屬性列表中每個鍵極其對應值共同組成一個字串。也即可以理解為KEY-VALUE的形式。

  很多時候為了提高程式的應用效率,這類Properties檔案可以儲存在緩衝系統中,因此,在操作一些特有資料時可以選擇使用Properties。在開發過程中,需要靈活使用。在本博文中將詳細介紹該類的使用,以及將Properties檔案儲存為XML檔案和讀取XML檔案中的KEY值等,由於在本案例中,代碼裡面使用了詳細的注釋,因此,為了減少篇幅,僅留下對代碼理解有用的資訊,所以不再過多的闡述。

  本博文時本人的勞動成果所得,在部落格園總結分享,歡迎轉載。在沒有作者的書面說明的情況下,必須保留本段聲明。itRed  郵箱:[email protected]  部落格連結:http://www.cnblogs.com/itred  GitHub連結:http://github.com/itred

二.案例:

  1. 建立項目:

      在本DEMO中,不介紹檔案的建立過程,直接採用手動建立。建立一個java項目,並且,在項目目錄下建立一個properties檔案,用於存放我們即將操作的字串(可以理解為key-value的索引值對字串)。   

  2. 添加一個key-value字串:

      主要思路是首先載入這個Properties檔案,其中需要注意的是,這個寫入進去之後是必須要進行儲存的,所以,不僅需要輸入資料流,更需要輸出資料流。這裡利用setProperty進行鍵入key-value值,再利用store進行儲存。關鍵代碼如下:

    in = new BufferedInputStream(new FileInputStream(PROPS_PATH));    props.load(in);       ou = new BufferedOutputStream(new FileOutputStream(PROPS_PATH));       props.setProperty(key, value);       props.store(ou, "INSERT KEY-VALUE :" + key + "=" + value + "***");

 

  3. 將map中的key-value全部寫入Properties中:

    因為Map也是屬於Key-Value類型的索引值對,所以和Properties可以進行近似的理解。要實現將map中的所有值寫入到Properties檔案中,其實主要思路與上面是一樣的,只是在寫入時需要遍曆Map中的所有Key值和Value值。關鍵代碼如下:

    in = new BufferedInputStream(new FileInputStream(PROPS_PATH));       props.load(in);       os = new BufferedOutputStream(new FileOutputStream(PROPS_PATH));       for (Map.Entry<String, String> entry : map.entrySet()) {             props.setProperty(entry.getKey(), entry.getValue());       }        props.store(os, "Insert all map");

 

  4. 遍曆Properties中的所有Key值和value值:

    直接將其以流的形式載入到記憶體中,直接進行擷取所有值。其實,實現這個遍曆的方法還有很多,本例使用實現後的關鍵代碼如下:

    in = new BufferedInputStream(new FileInputStream(PROPS_PATH));       props.load(in);       Enumeration enu = props.propertyNames();       props.list(System.out);       while (enu.hasMoreElements()) {          System.out.println("(KEY)" + enu.nextElement() + "=(VALUE)"                     + props.getProperty((String) enu.nextElement()));        }

 

  5. 通過key值擷取map值:

      因為和map差不多都是存放key-value形式的索引值對字串,因此很自然想到只取該檔案中某個key的value值。僅僅需要props.getProperty(key)便可完成。

  6. 將該Properties檔案中的key-value儲存為xml檔案:

    實現的思路是直接調用Properties類中的一個方法storeToXml()就可以順利完成。關鍵代碼如下:

    in = new BufferedInputStream(new FileInputStream(PROPS_PATH));       props.load(in);       ou = new BufferedOutputStream(new FileOutputStream(new File(                  "D:/test.xml")));       props.storeToXML(ou, "測試");

 

  7. 從xml中擷取key的value值:

      以流的形式載入xml檔案,然後通過方法loadFromXML()讀入到properties,再通過getProperty()進行取值。

    Properties props = new Properties();       String XML_PATH = "D:/test.xml";       InputStream in = null;       try {           in = new BufferedInputStream(                  new FileInputStream(new File(XML_PATH)));           props.loadFromXML(in);           String value = props.getProperty(key);           return value;       } catch (Exception e) {           e.printStackTrace();       return "";    }

 

三.總結:

    其實Properties的使用是很簡單的,但是對於從未使用過這個類的朋友而言,真心不知該從何下手。對此,本人也是深有體會。與其用一個方法查詢一個方法,倒還不如一次性對該Properties檔案中的方法進行一個全面的瞭解,這樣,在以後的日子裡,用起來也得心應手,十分方便。

    本案例是本人的學習總結,代碼實現僅作功能性測試使用,不可用於生產過程,因為,不斷的進行流檔案的載入的開啟,在本例中未進行及時的關閉操作。所以,如果需要應用於實際生產中,需要在finally中,及時的關閉Properties檔案。

    另附本案例中所涉及到的案例源碼連結:http://github.com/itred

 

 

 itRed  部落格:http://itred.cnblogs.com
GitHub:
https://github.com/itRed著作權聲明:本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段說明,
且在文章明顯位置給出原文連結,否則保留追究法律責任的權利。

Properties操作指南

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.