Properties讀取properties檔案
阿新 • • 發佈:2019-01-08
在編寫一個專案時,我們會時常修改一些配置變數來適應不同的執行環境,同時也讓使用者能夠脫離程式去修改相關的變數設定。通常我們將這些變數定義在後綴名為properties的檔案中,檔案內容的格式為“鍵=值”,文字用“#”註釋。 而java提供了java.util.Properties來讀取這些檔案,具體Properties參見憑海臨風的部落格:http://www.cnblogs.com/bakari/p/3562244.html 它提供了幾個主要的方法:
1. getProperty ( String key),用指定的鍵在此屬性列表中搜索屬性。也就是通過引數 key ,得到 key 所對應的 value。
2. load ( InputStream inStream),從輸入流中讀取屬性列表(鍵和元素對)。通過對指定的檔案(比如說上面的 test.properties 檔案)進行裝載來獲取該檔案中的所有鍵 - 值對。以供 getProperty ( String key) 來搜尋。
3. setProperty ( String key, String value) ,呼叫 Hashtable 的方法 put 。他通過呼叫基類的put方法來設定 鍵 - 值對。
4. store ( OutputStream out, String comments),以適合使用 load 方法載入到 Properties 表中的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流。與 load 方法相反,該方法將鍵 - 值對寫入到指定的檔案中去。
5. clear (),清除所有裝載的 鍵 - 值對。該方法在基類中提供。
要獲取定義在.properties中的值,首先要用Properties的方法load(InputStream inStream)來裝載配置檔案從而獲取配置檔案中的鍵值對,形成屬性列表,其次用getProperty(String key)來獲取屬性列表中對應的值。 此次主要有兩種讀取.properties檔案的方法(在Java Project中): jdbc.properties:
1.使用FileInputStream("資源名稱絕對路徑")
2.使用getClass.getResourceAsStream("資源名稱") -推薦
1. getProperty ( String key),用指定的鍵在此屬性列表中搜索屬性。也就是通過引數 key ,得到 key 所對應的 value。
2. load ( InputStream inStream),從輸入流中讀取屬性列表(鍵和元素對)。通過對指定的檔案(比如說上面的 test.properties 檔案)進行裝載來獲取該檔案中的所有鍵 - 值對。以供 getProperty ( String key) 來搜尋。
3. setProperty ( String key, String value) ,呼叫 Hashtable 的方法 put 。他通過呼叫基類的put方法來設定 鍵 - 值對。
4. store ( OutputStream out, String comments),以適合使用 load 方法載入到 Properties 表中的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流。與 load 方法相反,該方法將鍵 - 值對寫入到指定的檔案中去。
5. clear (),清除所有裝載的 鍵 - 值對。該方法在基類中提供。
要獲取定義在.properties中的值,首先要用Properties的方法load(InputStream inStream)來裝載配置檔案從而獲取配置檔案中的鍵值對,形成屬性列表,其次用getProperty(String key)來獲取屬性列表中對應的值。 此次主要有兩種讀取.properties檔案的方法(在Java Project中): jdbc.properties:
- driverClass = com.mysql.jdbc.Driver
- jdbcURL=jdbc:mysql://127.0.0.1:3306/protest?useUnicode=true&characterEncoding=utf-8
- user = root
- password = root
1.使用FileInputStream("資源名稱絕對路徑")
- public Properties propertiesFromFile() throws FileNotFoundException{
- properties = new Properties();
- InputStream in = null;
- try
- in = new BufferedInputStream(new FileInputStream(propertiesPath));
- properties.load(in);
- }catch (FileNotFoundException e){
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- try {
- in.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return properties;
- }
2.使用getClass.getResourceAsStream("資源名稱") -推薦
- public Properties propertiesFromClass(){
- properties = new Properties();
- InputStream in1 = this.getClass().getResourceAsStream(propertiesPath);
- InputStream is=PropertiesLoad.class.getResourceAsStream("/jdbc.properties");
- try {
- properties.load(in1);
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- try {
- in1.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return properties;
- }
- PropertiesLoad proLoad = new PropertiesLoad(propertiesPath);
- String DriverClass = proLoad.propertiesFromClass().getProperty("driverClass");
- PropertiesLoad proLoad = new PropertiesLoad(propertiesPath);
- Properties pro = proLoad.propertiesFromClass();
- OutputStream out = new FileOutputStream(DBconnect.class.getResource("/jdbc1.properties").toString().substring(6));
- pro.setProperty("password", password+"1");
- try {
- pro.store(out, "ceshiwenjian01");
- } catch (IOException e) {
- e.printStackTrace();
- }
jdbc1.properties:
- #ceshiwenjian01
- #Tue Aug 3016:06:07 GMT+08:002016
- driverClass=com.mysql.jdbc.Driver
- user=root
- password=root1
- jdbcURL=jdbc\:mysql\://127.0.0.1\:3306/protest?useUnicode\=true&characterEncoding\=utf-8