今天偶然碰到這個類逼纸,發(fā)現(xiàn)jdk中這些平時不大用到的類還挺好玩兒的嗅蔬,用起來也特別實在方便,隨便寫點記錄下菇用。
java.util.Properties是對properties這類配置文件的映射澜驮。支持key-value類型和xml類型兩種。
key-value類型的配置文件大略長這樣:
測試環(huán)境配置:平臺路徑配置
jstrd_home=D:/TMS2006/webapp/tms2006/WEB-INF/
dbPort = localhost
databaseName = myd
dbUserName = root
打頭的是注釋行惋鸥,Properties會忽略注釋杂穷。允許只有key沒有value。
例如這樣:
測試環(huán)境配置:平臺路徑配置
jstrd_home=D:/TMS2006/webapp/tms2006/WEB-INF/
dbPort =
databaseName
這種情況下卦绣,value會被set成null耐量。
properties類實現(xiàn)了Map接口,所以很明顯滤港,他是用map來存儲key-value數(shù)據(jù)廊蜒,所以也注定存入數(shù)據(jù)是無序的,這個點需要注意溅漾。只能通過key的方式來get對應value山叮。
針對key-value這種配置文件,是用load方法就能直接映射成map添履,非常簡單好用屁倔。這種配置文件也是我們最重要碰到的配置文件,利用properties讀取這類文件到內(nèi)存一行代碼就歐科缝龄,比自己解析強大多了汰现,這點很贊挂谍。
讀取配置文件的大略代碼如下:
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方法直接生產(chǎn)一個內(nèi)存map,第九行就能get到對應的value了瞎饲,簡單快捷口叙。
這里的第七行l(wèi)ist方法是一個輸出方法,這邊是輸出到console嗅战,也可以輸出到文件等妄田,就能實現(xiàn)內(nèi)存寫入配置文件了。
比如這樣:
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 }
這樣就能把內(nèi)存中的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 }
把內(nèi)存中的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類這種特別奇葩的類,但是這些不常用的工具類還是很方便使用的色查,要能用起來薯演,在用得到的時候還是很能提高效率的。比自己寫解析方便快捷多了秧了。