今天偶然碰到這個類,發現jdk中這些平時不大用到的類還挺好玩兒的,用起來也特別實在方便,隨便寫點記錄下。java
java.util.Properties是對properties這類配置文件的映射。支持key-value類型和xml類型兩種。web
key-value類型的配置文件大略長這樣:app
#測試環境配置:平臺路徑配置 jstrd_home=D:/TMS2006/webapp/tms2006/WEB-INF/ dbPort = localhost databaseName = myd dbUserName = root
#打頭的是註釋行,Properties會忽略註釋。容許只有key沒有value。webapp
例如這樣:工具
#測試環境配置:平臺路徑配置 jstrd_home=D:/TMS2006/webapp/tms2006/WEB-INF/ dbPort =
databaseName
這種狀況下,value會被set成null。測試
properties類實現了Map接口,因此很明顯,他是用map來存儲key-value數據,因此也註定存入數據是無序的,這個點須要注意。只能經過key的方式來get對應value。spa
針對key-value這種配置文件,是用load方法就能直接映射成map,很是簡單好用。這種配置文件也是咱們最重要碰到的配置文件,利用properties讀取這類文件到內存一行代碼就歐科,比本身解析強大多了,這點很贊。code
讀取配置文件的大略代碼以下:xml
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類這種特別奇葩的類,可是這些不經常使用的工具類仍是很方便使用的,要能用起來,在用獲得的時候仍是很能提升效率的。比本身寫解析方便快捷多了。