Open Java Project

          Keep it simple, Stupid, Less is more

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            20 Posts :: 0 Stories :: 12 Comments :: 0 Trackbacks

          JDK1.5(代號Tiger)中更新了java.util.Properties類,提供了從XML文件中讀寫key-value對屬性的簡單方法:loadFromXML()storeToXML()

          1、基本加載屬性的方法

          l         Sample屬性文件:sample.properties

          foo=bar
          fu=baz

          l         加載屬性的Sample程序

          import java.io.FileInputStream;
          import java.util.Properties;
           
          public class LoadSampleProperties {
           
              public static void main(String[] args) throws Exception {
                  Properties prop = new Properties();
                  FileInputStream fis = new FileInputStream("props/sample.properties");
                  prop.load(fis);
                  prop.list(System.out);
                  System.out.println("\nThe foo property: " + prop.getProperty("foo"));
              }
          }

          l         輸出結果如下:

          -- listing properties --
          fu=baz
          foo=bar
           
          The foo property: bar

           

          2、從XML中加載屬性

          l         下面是Properties 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>

          l         Sample XML屬性文件:sample.xml(符合上面的Properties DTD

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
          <properties>
                 <comment>Hello</comment>
                 <entry key="foo">bar</entry>
                 <entry key="fu">baz</entry>
          </properties>

          l         <entry>標記指定具體一個屬性,由key屬性指定屬性名,而<entry>標記的內容指定屬性值

          l         <comment>標記可以用來指定注釋

          l         XML文件加載屬性的Sample程序

          import java.io.FileInputStream;
          import java.util.Properties;
           
          public class LoadSampleXML {
           
              public static void main(String[] args) throws Exception {
                  Properties prop = new Properties();
                  FileInputStream fis = new FileInputStream("props/sample.xml");
                  prop.loadFromXML(fis);
                  prop.list(System.out);
                  System.out.println("\nThe foo property: " + prop.getProperty("foo"));
              }
          }

          l         輸出的結果是一樣的

          l         可以看出方法很簡單:使用XML文件來保存屬性,使用loadFromXML()方法替代原來的load()方法來加載XML文件中屬性

           

          3、更新XML文件中的屬性值

          l         Sample程序

          import java.io.FileInputStream;
          import java.io.FileOutputStream;
          import java.util.Properties;
           
          public class UpdateSampleXml {
           
              public static void main(String[] args) throws Exception {
                  Properties prop = new Properties();
                  FileInputStream fis = new FileInputStream("props/sample.xml");
                  prop.loadFromXML(fis);
                  prop.list(System.out);
                  System.out.println("\nThe foo property: " + prop.getProperty("foo"));
           
                  prop.setProperty("foo", "Hello World!");
                  prop.setProperty("new-name", "new-value");
                  FileOutputStream fos = new FileOutputStream("props/sample.xml");
                  prop.storeToXML(fos, "Store Sample");
                  fos.close();
           
                  fis = new FileInputStream("props/sample.xml");
                  prop.loadFromXML(fis);
                  prop.list(System.out);
                  System.out.println("\nThe foo property: " + prop.getProperty("foo"));
              }
          }

          l         上面的例子加載了sample.xml中的屬性,更新了foo屬性的值,并新加了new-name屬性,調用storeToXML()方法保存到原文件中,并改變注釋內容為Store Sample

          l         程序執行后的sample.xml的內容如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
          <properties>
          <comment>Store Sample</comment>
          <entry key="new-name">new-value</entry>
          <entry key="fu">baz</entry>
          <entry key="foo">Hello World!</entry>
          </properties>
          posted on 2005-03-21 13:31 nelson_tu 閱讀(1655) 評論(0)  編輯  收藏 所屬分類: Tiger系列
          主站蜘蛛池模板: 宁武县| 咸宁市| 衢州市| 怀远县| 黄浦区| 陈巴尔虎旗| 吉林市| 湛江市| 梓潼县| 措勤县| 大荔县| 富顺县| 新建县| 金溪县| 邵阳县| 蚌埠市| 天津市| 丁青县| 开阳县| 涡阳县| 南皮县| 广河县| 巨野县| 阿巴嘎旗| 贞丰县| 安丘市| 临泽县| 永修县| 紫阳县| 青冈县| 米脂县| 榆社县| 威海市| 噶尔县| 桓仁| 吕梁市| 仙游县| 广丰县| 金门县| 宁陵县| 惠安县|