java讀取properties檔案的3種方法
阿新 • • 發佈:2019-02-15
Java 開發中,需要將一些易變的配置引數放置再 XML 配置檔案或者 properties 配置檔案中。然而 XML 配置檔案需要通過 DOM 或 SAX 方式解析,而讀取 properties 配置檔案就比較容易。
介紹幾種讀取方式:
1、基於ClassLoder讀取配置檔案
注意:該方式只能讀取類路徑下的配置檔案,有侷限但是如果配置檔案在類路徑下比較方便。
1 Properties properties = new Properties(); 2 // 使用ClassLoader載入properties配置檔案生成對應的輸入流 3 InputStream in = PropertiesMain.class.getClassLoader().getResourceAsStream("config/config.properties"); 4 // 使用properties物件載入輸入流 5 properties.load(in); 6 //獲取key對應的value值 7 properties.getProperty(String key);
2、基於 InputStream 讀取配置檔案
注意:該方式的優點在於可以讀取任意路徑下的配置檔案
1 Properties properties = new Properties(); 2 // 使用InPutStream流讀取properties檔案 3 BufferedReader bufferedReader = new BufferedReader(new FileReader("E:/config.properties")); 4 properties.load(bufferedReader); 5 // 獲取key對應的value值 6 properties.getProperty(String key);
3、通過 java.util.ResourceBundle 類來讀取,這種方式比使用 Properties 要方便一些
1>通過 ResourceBundle.getBundle() 靜態方法來獲取(ResourceBundle是一個抽象類),這種方式來獲取properties屬性檔案不需要加.properties字尾名,只需要檔名即可
1 properties.getProperty(String key); 2 //config為屬性檔名,放在包com.test.config下,如果是放在src下,直接用config即可 3 ResourceBundle resource = ResourceBundle.getBundle("com/test/config/config"); 4 String key = resource.getString("keyWord");
2>從 InputStream 中讀取,獲取 InputStream 的方法和上面一樣,不再贅述
1 ResourceBundle resource = new PropertyResourceBundle(inStream);
注意:在使用中遇到的最大的問題可能是配置檔案的路徑問題,如果配置檔案入在當前類所在的包下,那麼需要使用包名限定,如:config.properties入在com.test.config包下,則要使用com/test/config/config.properties(通過Properties來獲取)或com/test/config/config(通過ResourceBundle來獲取);屬性檔案在src根目錄下,則直接使用config.properties或config即可。