更新時(shí)間:2020-05-21 14:56:49 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2601次
讀取.properties配置文件在實(shí)際的開發(fā)中使用的很多,總結(jié)了一下,有以下幾種方法:
1.通過jdk提供的java.util.Properties類。
此類繼承自java.util.HashTable,即實(shí)現(xiàn)了Map接口,所以,可使用相應(yīng)的方法來操作屬性文件,但不建議使用像put、putAll這兩個(gè)方法,因?yàn)閜ut方法不僅允許存入String類型的value,還可以存入Object類型的。因此java.util.Properties類提供了getProperty()和setProperty()方法來操作屬性文件,同時(shí)使用store或save(已過時(shí))來保存屬性值(把屬性值寫入.properties配置文件)。在使用之前,還需要加載屬性文件,它提供了兩個(gè)方法:load和loadFromXML。
load有兩個(gè)方法的重載:load(InputStreaminStream)、load(Readerreader),所以,可根據(jù)不同的方式來加載屬性文件。
可根據(jù)不同的方式來獲取InputStream,如:
1)通過當(dāng)前類加載器的getResourceAsStream方法獲取
InputStreaminStream=TestProperties.class.getClassLoader().getResourceAsStream("test.properties");
2)從文件獲取
InputStreaminStream=newFileInputStream(newFile("filePath"));
3)也是通過類加載器來獲取,和第一種一樣
InputStreamin=ClassLoader.getSystemResourceAsStream("filePath");
4)在servlet中,還可以通過context來獲取InputStream
InputStreamin=context.getResourceAsStream("filePath");
5)通過URL來獲取
URLurl=newURL("path");
InputStreaminStream=url.openStream();
2.通過java.util.ResourceBundle類來讀取,這種方式比使用Properties要方便一些。
1)通過ResourceBundle.getBundle()靜態(tài)方法來獲?。≧esourceBundle是一個(gè)抽象類),這種方式來獲取properties屬性文件不需要加.properties后綴名,只需要文件名即可。ResourceBundleresource=ResourceBundle.getBundle("com/mmq/test");//test為屬性文件名,放在包c(diǎn)om.mmq下,如果是放在src下,直接用test即可Stringkey=resource.getString("username");
2)從InputStream中讀取,獲取InputStream的方法和上面一樣,不再贅述。
ResourceBundleresource=newPropertyResourceBundle(inStream);
注意:在使用中遇到的最大的問題可能是配置文件的路徑問題,如果配置文件入在當(dāng)前類所在的包下,那么需要使用包名限定,如:test.properties入在com.mmq包下,則要使用com/mmq/test.properties(通過Properties來獲?。┗騝om/mmq/test(通過ResourceBundle來獲?。?;屬性文件在src根目錄下,則直接使用test.properties或test即可。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java常見基礎(chǔ),讀取properties文件”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743