方便好使的java.util.Properties類(轉(zhuǎn))

今天偶然碰到這個類逼纸,發(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類這種特別奇葩的類,但是這些不常用的工具類還是很方便使用的色查,要能用起來薯演,在用得到的時候還是很能提高效率的。比自己寫解析方便快捷多了秧了。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跨扮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子验毡,更是在濱河造成了極大的恐慌衡创,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件米罚,死亡現(xiàn)場離奇詭異钧汹,居然都是意外死亡,警方通過查閱死者的電腦和手機录择,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門拔莱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人隘竭,你說我怎么就攤上這事塘秦。” “怎么了动看?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵尊剔,是天一觀的道長。 經(jīng)常有香客問我菱皆,道長须误,這世上最難降的妖魔是什么挨稿? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮京痢,結果婚禮上奶甘,老公的妹妹穿的比我還像新娘。我一直安慰自己祭椰,他們只是感情好臭家,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著方淤,像睡著了一般钉赁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上携茂,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天你踩,我揣著相機與錄音,去河邊找鬼讳苦。 笑死姓蜂,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的医吊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逮京,長吁一口氣:“原來是場噩夢啊……” “哼卿堂!你這毒婦竟也來了?” 一聲冷哼從身側響起懒棉,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤草描,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后策严,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體穗慕,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年妻导,在試婚紗的時候發(fā)現(xiàn)自己被綠了逛绵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡倔韭,死狀恐怖术浪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寿酌,我是刑警寧澤胰苏,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站醇疼,受9級特大地震影響硕并,放射性物質(zhì)發(fā)生泄漏法焰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一倔毙、第九天 我趴在偏房一處隱蔽的房頂上張望埃仪。 院中可真熱鬧,春花似錦普监、人聲如沸贵试。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毙玻。三九已至,卻和暖如春廊散,著一層夾襖步出監(jiān)牢的瞬間桑滩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工允睹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留运准,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓缭受,卻偏偏與公主長得像胁澳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子米者,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理韭畸,服務發(fā)現(xiàn),斷路器蔓搞,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,809評論 6 342
  • 1. Java基礎部分 基礎部分的順序:基本語法胰丁,類相關的語法,內(nèi)部類的語法喂分,繼承相關的語法锦庸,異常的語法,線程的語...
    子非魚_t_閱讀 31,630評論 18 399
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx閱讀 8,328評論 0 16
  • java語言中蒲祈,引入了對象互斥鎖的概念甘萧,保證共享數(shù)據(jù)操作的完整性。每個對象都對于一個可稱為“互斥鎖”的標記讳嘱,這個標...
    exmexm閱讀 283評論 0 0