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