java讀取.properties配置文件的幾種方法

讀取.properties配置文件在實際的開發中使用的很多,總結了一下,有以下幾種方法(僅僅是我知道的):
一、通過jdk提供的java.util.Properties類。
此類繼承自java.util.HashTable,即實現了Map接口,所以,可使用相應的方法來操作屬性文件,但不建議使用像put、putAll這兩個方法,因爲put方法不僅允許存入String類型的value,還可以存入Object類型的。因此java.util.Properties類提供了getProperty()和setProperty()方法來操作屬性文件,同時使用store或save(已過時)來保存屬性值(把屬性值寫入.properties配置文件)。在使用之前,還需要加載屬性文件,它提供了兩個方法:load和loadFromXML。
load有兩個方法的重載:load(InputStream inStream)、load(Reader reader),所以,可根據不同的方式來加載屬性文件。
可根據不同的方式來獲取InputStream,如:
1、通過當前類加載器的getResourceAsStream方法獲取

[java] view plain copy
  1. InputStream inStream = TestProperties.class.getClassLoader().getResourceAsStream("test.properties");  


2、從文件獲取
[java] view plain copy
  1. InputStream inStream = new FileInputStream(new File("filePath"));  


3、也是通過類加載器來獲取,和第一種一樣
[java] view plain copy
  1. InputStream in = ClassLoader.getSystemResourceAsStream("filePath");  


4、在servlet中,還可以通過context來獲取InputStream
[java] view plain copy
  1. InputStream in = context.getResourceAsStream("filePath");  


5、通過URL來獲取
[java] view plain copy
  1. URL url = new URL("path");  
  2. InputStream inStream = url.openStream();  


讀取方法如下:
[java] view plain copy
  1. Properties prop = new Properties();  
  2. prop.load(inStream);  
  3. String key = prop.getProperty("username");  
  4. //String key = (String) prop.get("username");  



二、通過java.util.ResourceBundle類來讀取,這種方式比使用Properties要方便一些。
1、通過ResourceBundle.getBundle()靜態方法來獲取(ResourceBundle是一個抽象類),這種方式來獲取properties屬性文件不需要加.properties後綴名,只需要文件名即可。
[java] view plain copy
  1. ResourceBundle resource = ResourceBundle.getBundle("com/mmq/test");//test爲屬性文件名,放在包com.mmq下,如果是放在src下,直接用test即可  
  2. String key = resource.getString("username");  


2、從InputStream中讀取,獲取InputStream的方法和上面一樣,不再贅述。
[java] view plain copy
  1. ResourceBundle resource = new PropertyResourceBundle(inStream);  


    注意:在使用中遇到的最大的問題可能是配置文件的路徑問題,如果配置文件入在當前類所在的包下,那麼需要使用包名限定,如:test.properties入在com.mmq包下,則要使用com/mmq/test.properties(通過Properties來獲取)或com/mmq/test(通過ResourceBundle來獲取);屬性文件在src根目錄下,則直接使用test.properties或test即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章