讀取.properties配置文件在實(shí)際的開(kāi)發(fā)中使用的很多,總結(jié)了一下,有以下幾種方法:
1.通過(guò)jdk提供的java.util.Properties類(lèi)。
此類(lèi)繼承自java.util.HashTable,即實(shí)現(xiàn)了Map接口,所以,可使用相應(yīng)的方法來(lái)操作屬性文件,但不建議使用像put、putAll這兩個(gè)方法,因?yàn)閜ut方法不僅允許存入String類(lèi)型的value,還可以存入Object類(lèi)型的。因此java.util.Properties類(lèi)提供了getProperty()和setProperty()方法來(lái)操作屬性文件,同時(shí)使用store或save(已過(guò)時(shí))來(lái)保存屬性值(把屬性值寫(xiě)入.properties配置文件)。在使用之前,還需要加載屬性文件,它提供了兩個(gè)方法:load和loadFromXML。
load有兩個(gè)方法的重載:load(InputStreaminStream)、load(Readerreader),所以,可根據(jù)不同的方式來(lái)加載屬性文件。
可根據(jù)不同的方式來(lái)獲取InputStream,如:
1)通過(guò)當(dāng)前類(lèi)加載器的getResourceAsStream方法獲取
InputStreaminStream=TestProperties.class.getClassLoader().getResourceAsStream("test.properties");
2)從文件獲取
InputStreaminStream=newFileInputStream(newFile("filePath"));
3)也是通過(guò)類(lèi)加載器來(lái)獲取,和第一種一樣
InputStreamin=ClassLoader.getSystemResourceAsStream("filePath");
4)在servlet中,還可以通過(guò)context來(lái)獲取InputStream
InputStreamin=context.getResourceAsStream("filePath");
5)通過(guò)URL來(lái)獲取
URLurl=newURL("path");InputStreaminStream=url.openStream();
2.通過(guò)java.util.ResourceBundle類(lèi)來(lái)讀取,這種方式比使用Properties要方便一些。
1)通過(guò)ResourceBundle.getBundle()靜態(tài)方法來(lái)獲?。≧esourceBundle是一個(gè)抽象類(lèi)),這種方式來(lái)獲取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);
注意:在使用中遇到的最大的問(wèn)題可能是配置文件的路徑問(wèn)題,如果配置文件入在當(dāng)前類(lèi)所在的包下,那么需要使用包名限定,如:test.properties入在com.mmq包下,則要使用com/mmq/test.properties(通過(guò)Properties來(lái)獲取)或com/mmq/test(通過(guò)ResourceBundle來(lái)獲?。粚傩晕募趕rc根目錄下,則直接使用test.properties或test即可。
以上就是長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java常見(jiàn)基礎(chǔ),讀取properties文件”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。