Properties操做指南

一.簡介:java

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

  不少時候爲了提升程序的應用效率,這類Properties文件能夠保存在緩存系統中,所以,在操做一些特有數據時能夠選擇使用Properties。在開發過程當中,須要靈活使用。在本博文中將詳細介紹該類的使用,以及將Properties文件保存爲XML文件和讀取XML文件中的KEY值等,因爲在本案例中,代碼裏面使用了詳細的註釋,所以,爲了減小篇幅,僅留下對代碼理解有用的信息,因此再也不過多的闡述。github

  本博文時本人的勞動成果所得,在博客園總結分享,歡迎轉載。在沒有做者的書面說明的狀況下,必須保留本段聲明。做者:itRed  郵箱:it_red@sina.com  博客連接:http://www.cnblogs.com/itred  GitHub連接:http://github.com/itred緩存

二.案例:學習

  1. 新建項目:

      在本DEMO中,不介紹文件的建立過程,直接採用手動建立。新建一個java項目,而且,在項目目錄下新建一個properties文件,用於存放咱們即將操做的字符串(能夠理解爲key-value的鍵值對字符串)。   測試

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

      主要思路是首先加載這個Properties文件,其中須要注意的是,這個寫入進去以後是必需要進行保存的,因此,不只須要輸入流,更須要輸出流。這裏利用setProperty進行鍵入key-value值,再利用store進行保存。關鍵代碼以下:code

    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中:xml

    由於Map也是屬於Key-Value類型的鍵值對,因此和Properties能夠進行近似的理解。要實現將map中的全部值寫入到Properties文件中,其實主要思路與上面是同樣的,只是在寫入時須要遍歷Map中的全部Key值和Value值。關鍵代碼以下:blog

    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文件。

    另附本案例中所涉及到的案例源碼請點擊連接

 

 

 做者:itRed 博客:http://itred.cnblogs.com
GitHub:
https://github.com/itRed
相關文章
相關標籤/搜索