Java 開發中,需要將一些易變的配置參數放置再 XML 配置文件或者 properties 配置文件中。然而 XML 配置文件需要通過 DOM 或 SAX 方式解析,而讀取 properties 配置文件就比較容易。
1. 讀取properties文件的方法
1. 使用類加載器ClassLoder類讀取配置文件
-
InputStream in = MainClass.class.getClassLoader().getResourceAsStream("com/demo/config.properties");
- MainClass.class是主類的反射對象,因為getClassLoader()是class類的對象方法。
- 在類加載器中調用getResourceAsStream()時,采用相對路徑,起始位置在src目錄,路徑開頭沒有“/”。
-
InputStream in = (new MainClass()).getClass().getClassLoader().getResourceAsStream("com/demo/config.properties");
- 因為getClass()是object類的對象方法,所有在主類調用時要將主類實體化,即new MainClass()。
- 同理,相對路徑起始位置同上。
2. 用class對象讀取配置文件
之所以Class對象也可以加載資源文件是因為Class類封裝的getResourceAsStream方法的源碼中調用了類加載器。
-
InputStream in = MainClass.class.getResourceAsStream(“/com/demo/config.properties”);
- 同樣MainClass.class是主類的反射對象。
- 在class對象中調用getResourceAsStream()時,采用絕對路徑,起始位置在類路徑(bin目錄),因此路徑要以“/”開頭。
-
InputStream in = MainClass.class.getResourceAsStream(“config.properties”);
- 這種寫法是指文件與源碼在同一個目錄,class對象會在本目錄找文件。
3. 使用 BufferedReader輸入流讀取配置文件
-
這種方式只能是結對路徑,可以讀取任意路徑下的配置文件:
Properties prop = new Properties(); FileReader reader = new FileReader("E:/config.properties"); BufferedReader bufferedReader = new BufferedReader(reader); prop.load(bufferedReader);
-
可以使用
System.getProperty("user.dir")
方法獲取當前程序運行的工作根目錄,動態調整路徑:String rootPath = System.getProperty("user.dir"); FileReader reader = new FileReader(rootPath +"/com/demo/config.properties");
4. 使用ResourceBundle類讀取配置信息
- java.util.ResourceBundle 類中的靜態方法
getBundle("path")
讀取一個配置文件,必須是 .propertise文件,所有不用寫后綴。 - ResourceBundle對象只能每個參數讀取,需要使用集合來批處理。
- 采用相對路徑,起始位置在src目錄,路徑開頭不需要“/”
ResourceBundle resource = ResourceBundle.getBundle("com/demo/config");
String paraValue = resource.getString("paramName");