posts - 108,comments - 56,trackbacks - 0
              很多時候,我們會把一些設置,環境等數據量不大,而且不經常改變的參數寫到配置文件中,然后在程序中讀取這些參數。

              讀取參數是一個很簡單的過程,可以用java.util.Properties來完成。先來看看官方文檔:
            Properties 類表示了一個持久的屬性集。Properties 可保存在流中或從流中加載。屬性列表中每個鍵及其對應值都是一個字符串。 

            一個屬性列表可包含另一個屬性列表作為它的“默認值”;如果未能在原有的屬性列表中搜索到屬性鍵,則搜索第二個屬性列表。 

            因為 Properties 繼承于 Hashtable,所以可對 Properties 對象應用 put 和 putAll 方法。但強烈反對使用這兩個方法,因為它們允許調用方插入其鍵或值不是 Strings 的項。相反,應該使用 setProperty 方法。如果在“有危險”的 Properties 對象(即包含非 String 的鍵或值)上調用 store 或 save 方法,則該調用將失敗。 

            load 和 store 方法按下面所指定的、簡單的面向行的格式加載和存儲屬性。此格式使用 ISO 8859-1 字符編碼。可以使用 Unicode 轉義符來編寫此編碼中無法直接表示的字符;轉義序列中只允許單個 'u' 字符。可使用 native2ascii 工具對屬性文件和其他字符編碼進行相互轉換。 

            loadFromXML(InputStream) 和 storeToXML(OutputStream, String, String) 方法按簡單的 XML 格式加載和存儲屬性。默認使用 UTF-8 字符編碼,但如果需要,可以指定某種特定的編碼。XML 屬性文檔具有以下 DOCTYPE 聲明: 

           
          <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
           注意,導入或導出屬性時不 訪問系統 URI (http://java.sun.com/dtd/properties.dtd);該系統 URI 僅作為一個惟一標識 DTD 的字符串: 
              
          <?xml version="1.0" encoding="UTF-8"?>
              
          <!-- DTD for properties -->
              
          <!ELEMENT properties ( comment?, entry* ) >
              
          <!ATTLIST properties version CDATA #FIXED "1.0">
              
          <!ELEMENT comment (#PCDATA) >
              
          <!ELEMENT entry (#PCDATA) >
              
          <!ATTLIST entry key CDATA #REQUIRED>

              寫一個讀取參數的簡單的例子:
          package woxingwosu;

          import java.io.BufferedInputStream;
          import java.io.FileInputStream;
          import java.util.Properties;

          public class ReadProperties {

              
          public static void main(String[] args) {
                  
          //對于XML文件一定要符合http://java.sun.com/dtd/properties.dtd
                  String name="woxingwosu.xml";
                  Properties prop
          =loadFile(name);
                  
          if(prop!=null){
                      System.out.println(
          "XMl file");
                      System.out.println(
          "no="+prop.getProperty("no"));
                      System.out.println(
          "name="+prop.getProperty("name"));
                  }
                  
                  
          //對于非XML文件,key與value之間可以用冒號隔開,也可以用空格隔開
                  name="woxingwosu.properties";
                  prop
          =loadFile(name);
                  
          if(prop!=null){
                      System.out.println(
          "Properties file");
                      System.out.println(
          "no="+prop.getProperty("no"));
                      System.out.println(
          "name="+prop.getProperty("name"));
                  }
              }
              
              
          /**
               * 加載配置文件
               * 
          @param path        --文件的路徑
               * 
          @param isXmlFile --true:配置文件是XML文件,false:非XML文件
               * 
          @return(Properties)
               
          */
              
          private static Properties loadFile(String path){
                  Properties prop
          =null;
                  
          try{
                      BufferedInputStream inBuff
          =new BufferedInputStream(new FileInputStream(path));
                      prop
          =new Properties();
                      
          if(path.endsWith(".xml"))
                          prop.loadFromXML(inBuff);
                      
          else
                          prop.load(inBuff);
                      inBuff.close();
                  }
          catch(Exception e){
                      e.printStackTrace();
                  }
                  
          return prop;
              }
          }
              配置文件woxingwosu.xml
          <?xml version="1.0" encoding="UTF-8"?> 
          <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
          <properties> 
          <entry key="no">woxingwosu</entry> 
          <entry key="name">我行我素</entry> 
          </properties> 
              配置文件woxingwosu.properties(我用Unicode編碼)
          no:woxingwosu
          name \u6211\u884c\u6211\u7d20

              除了讀取參數,同時也可以修改參數,添加參數,或者生成一個文件,參考一下幫助文檔,其實都很簡單。
          posted on 2007-07-23 18:34 破繭而出 閱讀(553) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 井冈山市| 惠安县| 屏边| 新平| 商水县| 陕西省| 永春县| 禹州市| 恩施市| 蒙阴县| 高碑店市| 甘孜| 疏勒县| 长寿区| 南通市| 贵阳市| 庆元县| 江孜县| 徐闻县| 昌图县| 蕉岭县| 石阡县| 和静县| 沂水县| 南丹县| 晋州市| 兴国县| 宜章县| 那曲县| 勐海县| 班戈县| 西乡县| 江安县| 钟山县| 丹江口市| 蒙自县| 长沙县| 额尔古纳市| 夹江县| 安丘市| 建平县|