我們經常使用.properties文件作為配置文件,所以大部分的時候,我們只是load,然后讀取其配置屬性.
但是,有的時候,我們可能也需要動態的更新配置,那么怎么來實現對properties配置文件的更新操作呢.
這個問題其實很簡單,我們先看讀操作:
Properties p;
??? ??? try {
??? ??? ??? p = PropertiesReader
??? ??? ??? ??? ??? .readProperties("org/zy/common/parse/util/config.properties");
先載入配置文件,
String javaHome = p.getProperty("JAVA_HOME"));
通過getProperty()方法和關鍵字來實現屬性的檢索和返回.
那么,如何寫?
多的時候我們知道,我們首先要讀我們的配置文件流,那么寫的時候,我們也要先得到一個寫文件流.
由于是文本文件,所以我們使用FileWriter.
String path =p.getClass().getResource("/org/zy/common/parse/util/config.properties").getPath();
Writer w=new FileWriter(path);
此時,我們已經準備好了,要把更新的屬性寫到哪里,那么,如何寫?
有的時候,可能你是要更新某個屬性,有的時候,可能你要添加一個屬性.
可能你會使用w.write()方法來實現寫操作,沒有問題,但是,你以前的配置就完全沒有了,如果想保留的話,就只有完全寫一個新的文件.這中方法,對于更新某個屬性的值來說就稍微的麻煩一點.當然,可以用正則表達式來實現.
其實properties本身也給我們提供了方法.
p.setProperty("bb", "bb update string");
??? ??? ??? p.store(w,"bb");??? ???
??? ??? ??? w.close();
我們可以讀屬性,就可以設置屬性.
setProperty()方法就可以實現.
但是此時的更新只是在內存中,并沒有寫如文件.要寫入文件的話,就要調用store()方法.此時,我們關閉輸出流的話,數據已經持久化到了文件.
setProperty()中,如果你的屬性是文件里面沒有的屬性,那么,系統會進行追加操行,如果你的屬性,在系統中已經存在,那么系統就會進行更新操作.
例如:
你的配置文件是:
a=a
b=b
c=c
那么,如果你
p.setProperty("d","d");
那么,結果就是:
a=a
b=b
c=c
d=d
如果你執行
p.setProperty("a","d");
那么,結果就是:
a=d
b=b
c=c
|----------------------------------------------------------------------------------------|
版權聲明 版權所有 @zhyiwww
引用請注明來源 http://www.tkk7.com/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2007-08-02 11:26
zhyiwww 閱讀(1814)
評論(0) 編輯 收藏 所屬分類:
java basic