今天偶然碰到這個類,發現jdk中這些平時不大用到的類還挺好玩兒的,用起來也特別實在方便,隨便寫點記錄下。
java.util.Properties是對properties這類配置文件的映射。支持key-value類型和xml類型兩種。
key-value類型的配置文件大略長這樣:
#測試環境配置:平台路徑配置 jstrd_home=D:/TMS2006/webapp/tms2006/WEB-INF/ dbPort = localhost databaseName = myd dbUserName = root
#打頭的是注釋行,Properties會忽略注釋。允許只有key沒有value。
例如這樣:
#測試環境配置:平台路徑配置 jstrd_home=D:/TMS2006/webapp/tms2006/WEB-INF/ dbPort =
databaseName
這種情況下,value會被set成null。
properties類實現了Map接口,所以很明顯,他是用map來存儲key-value數據,所以也注定存入數據是無序的,這個點需要注意。只能通過key的方式來get對應value。
針對key-value這種配置文件,是用load方法就能直接映射成map,非常簡單好用。這種配置文件也是我們最重要碰到的配置文件,利用properties讀取這類文件到內存一行代碼就歐科,比自己解析強大多了,這點很贊。
讀取配置文件的大略代碼如下:
1 public class LoadSample {
2 public static void main(String args[]) throws Exception {
3 Properties prop = new Properties();
4 FileInputStream fis =
5 new FileInputStream("sample.properties");
6 prop.load(fis);
7 prop.list(System.out);
8 System.out.println("\nThe foo property: " +
9 prop.getProperty("foo"));
10 }
11 }
第六行的load方法直接生產一個內存map,第九行就能get到對應的value了,簡單快捷。
這里的第七行list方法是一個輸出方法,這邊是輸出到console,也可以輸出到文件等,就能實現內存寫入配置文件了。
比如這樣:
1 //通過list 方法將Properties寫入Properties文件
2 import java.io.IOException;
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.PrintStream;
6 import java.util.Properties;
7
8 public class Test {
9 public static void main(String[] args) {
10
11 Properties p = new Properties();
12 p.setProperty("id","dean");
13 p.setProperty("password","123456");
14
15 try{
16 PrintStream fW = new PrintStream(new File("e:\\test1.properties"));
17 p.list(fW );} catch (IOException e) {
18 e.printStackTrace();
19
20 }
21 }
22 }
這樣就能把內存中的properties對象寫入到文件中了。
另外一種配置形式是xml形式的,這種配置相對上面一種就少見一點。
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>
讀取xml配置跟讀取kv配置沒差別,就是把load換成xml對應的loadFromXML方法,代碼大略是這樣:
1 public class LoadSampleXML {
2 public static void main(String args[]) throws Exception {
3 Properties prop = new Properties();
4 FileInputStream fis =
5 new FileInputStream("sampleprops.xml");
6 prop.loadFromXML(fis);
7 prop.list(System.out);
8 System.out.println("\nThe foo property: " +
9 prop.getProperty("foo"));
10 }
11 }
把內存中的properties對象寫入到xml文件中也和上面差不多,就是把list方法改成xml對應的storeToXML方法。
代碼大略是這樣:
1 import java.io.IOException;
2 import java.io.File;
3 import java.io.FileInputStream;
4 import java.io.PrintStream;
5 import java.util.Properties;
6
7 public class Test {
8 public static void main(String[] args) {
9 Properties p = new Properties();
10 p.setProperty("id","dean");
11 p.setProperty("password","123456");
12
13 try{
14 PrintStream fW = new PrintStream(new File("e:\\test1.xml"));
15 p.storeToXML(fW,"test");
16 } catch (IOException e) {
17 e.printStackTrace();
18 }
19 }
20 }
21
總的來說,雖然jdk中存在date類這種特別奇葩的類,但是這些不常用的工具類還是很方便使用的,要能用起來,在用得到的時候還是很能提高效率的。比自己寫解析方便快捷多了。

