(1)
java.util.Properties
通過這個文件,可以獲得屬性和設置存儲屬性
感覺有點像session,存進去,讀出來,但是這個是永久保存的介質
FileInputStream fis=new FileInputStream("文件名");
Properties props =new Properties();
props.load(fis);
out.println("===="+props.getProperty("一個屬性名"));
fis.close();
(2)我們經(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()方法和關鍵字來實現(xiàn)屬性的檢索和返回.
那么,如何寫?
多的時候我們知道,我們首先要讀我們的配置文件流,那么寫的時候,我們也要先得到一個寫文件流.
由于是文本文件,所以我們使用FileWriter.
String path =p.getClass().getResource("/org/zy/common/parse/util/config.properties").getPath();
Writer w=new FileWriter(path);
此時,我們已經(jīng)準備好了,要把更新的屬性寫到哪里,那么,如何寫?
有的時候,可能你是要更新某個屬性,有的時候,可能你要添加一個屬性.
可能你會使用w.write()方法來實現(xiàn)寫操作,沒有問題,但是,你以前的配置就完全沒有了,如果想保留的話,就只有完全寫一個新的文件.這中方法,對于更新某個屬性的值來說就稍微的麻煩一點.當然,可以用正則表達式來實現(xiàn).
其實properties本身也給我們提供了方法.
p.setProperty("bb", "bb update string");
p.store(w,"bb");
w.close();
我們可以讀屬性,就可以設置屬性.
setProperty()方法就可以實現(xiàn).
但是此時的更新只是在內存中,并沒有寫如文件.要寫入文件的話,就要調用store()方法.此時,我們關閉輸出流的話,數(shù)據(jù)已經(jīng)持久化到了文件.
setProperty()中,如果你的屬性是文件里面沒有的屬性,那么,系統(tǒng)會進行追加操行,如果你的屬性,在系統(tǒng)中已經(jīng)存在,那么系統(tǒng)就會進行更新操作.
例如:
你的配置文件是:
a=a
b=b
c=c
那么,如果你
p.setProperty("d","d");
那么,結果就是:
a=a
b=b
c=c
d=d
如果你執(zhí)行
p.setProperty("a","d");
那么,結果就是:
a=d
b=b
c=c