java.util.Properties
類,那麼如今告訴您它是用來在一個文件中存儲鍵-值對的,其中鍵和值是用等號分隔的,如清單 1 所示。
Properties
對象中後,您就能夠找到兩個鍵( foo
和 fu
)和兩個值( foo
的 bar
和 fu
的 baz
)了。
InputStream
給 load()
方法,就會將每個鍵-值對添加到 Properties
實例中。而後用 list()
列出全部屬性或者用 getProperty()
獲取單獨的屬性。
import java.util.*; import java.io.*;public class LoadSample { public static void main(String args[]) throws Exception { Properties prop = new Properties(); FileInputStream fis =new FileInputStream("sample.properties"); prop.load(fis); prop.list(System.out); System.out.println("\nThe foo property: " +prop.getProperty("foo")); } } |
list()
方法的輸出中鍵-值對的順序與它們在輸入文件中的順序不同。 Properties
類在一個散列表(hashtable,事實上是一個 Hashtable
子類)中儲存一組鍵-值對,因此不能保證順序。
java.util.Properties
類如今提供了一種爲程序裝載和存儲設置的更容易的方法: loadFromXML(InputStream is)
和 storeToXML(OutputStream os, String comment)
方法。
<?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> |
<properties>
標籤中包裝的是一個 <comment>
標籤,後面是任意數量的 <entry>
標籤。對每個 <entry>
標籤,有一個鍵屬性,輸入的內容就是它的值。清單 5 顯示了
清單 1中的屬性文件的 XML 版本是什麼樣子的。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>Hi</comment> <entry key="foo">bar</entry> <entry key="fu">baz</entry> </properties> |
Properties
文件與讀取老格式的文件沒什麼不一樣。
import java.util.*; import java.io.*; public class LoadSampleXML { public static void main(String args[]) throws Exception { Properties prop = new Properties(); FileInputStream fis =new FileInputStream("sampleprops.xml"); prop.loadFromXML(fis); prop.list(System.out); System.out.println("\nThe foo property: " +prop.getProperty("foo")); } } |
Properties
還有一個功能是將屬性存儲到 XML 格式的文件中。雖然 store()
方法仍然會建立一個相似
清單 1 所示的文件,可是如今能夠用新的
storeToXML()
方法建立如
清單 5 所示的文件。只要傳遞一個
OutputStream
和一個用於註釋的 String
就能夠了。清單 7 展現了新的 storeToXML()
方法。
import java.util.*; import java.io.*; public class StoreXML { public static void main(String args[]) throws Exception { Properties prop = new Properties(); prop.setProperty("one-two", "buckle my shoe"); prop.setProperty("three-four", "shut the door"); prop.setProperty("five-six", "pick up sticks"); prop.setProperty("seven-eight", "lay them straight"); prop.setProperty("nine-ten", "a big, fat hen"); FileOutputStream fos =new FileOutputStream("rhyme.xml"); prop.storeToXML(fos, "Rhyme"); fos.close(); } } |
Properties
還有一個功能是將屬性存儲到 XML 格式的文件中。雖然 store()
方法仍然會建立一個相似
清單 1 所示的文件,可是如今能夠用新的
storeToXML()
方法建立如
清單 5 所示的文件。只要傳遞一個
OutputStream
和一個用於註釋的 String
就能夠了。清單 7 展現了新的 storeToXML()
方法。
import java.util.*; import java.io.*; public class StoreXML { public static void main(String args[]) throws Exception { Properties prop = new Properties(); prop.setProperty("one-two", "buckle my shoe"); prop.setProperty("three-four", "shut the door"); prop.setProperty("five-six", "pick up sticks"); prop.setProperty("seven-eight", "lay them straight"); prop.setProperty("nine-ten", "a big, fat hen"); FileOutputStream fos =new FileOutputStream("rhyme.xml"); prop.storeToXML(fos, "Rhyme"); fos.close(); } } |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>Rhyme</comment> <entry key="seven-eight">lay them straight</entry> <entry key="five-six">pick up sticks</entry> <entry key="nine-ten">a big, fat hen</entry> <entry key="three-four">shut the door</entry> <entry key="one-two">buckle my shoe</entry> </properties> |
Properties
對象。