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

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

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

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

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

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

           
          <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
           注意,導(dǎo)入或?qū)С鰧傩詴r不 訪問系統(tǒng) URI (http://java.sun.com/dtd/properties.dtd);該系統(tǒng) 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>

              寫一個讀取參數(shù)的簡單的例子:
          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

              除了讀取參數(shù),同時也可以修改參數(shù),添加參數(shù),或者生成一個文件,參考一下幫助文檔,其實都很簡單。
          posted on 2007-07-23 18:34 破繭而出 閱讀(559) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 阿拉善盟| 夏河县| 尚义县| 汝南县| 阿城市| 绥宁县| 凤山市| 开化县| 剑河县| 蒙城县| 绥阳县| 托克托县| 蒙山县| 九寨沟县| 博湖县| 永登县| 容城县| 上饶市| 荆州市| 集安市| 洪泽县| 汝南县| 南丰县| 虞城县| 闵行区| 吉木乃县| 清新县| 泉州市| 金塔县| 若尔盖县| 镇江市| 稻城县| 大港区| 内乡县| 广汉市| 南开区| 林西县| 凌源市| 东源县| 雷州市| 墨江|