使用java.util.Properties快速導入配置文件


1.java.util.Properties類繼承關系

Properties類表示一組持久屬性。屬性可以被保存到流或從流中加載。屬性列表中的每一個鍵及其相應的值是一個字符串。

繼承關系:

java.lang.Object
    java.util.Dictionary<K,V>
        java.util.Hashtable<Object,Object>
            java.util.Properties
public class Properties extends Hashtable<Object,Object>

重要的方法(從流中加載屬性):

public void load(InputStream inStream) throws IOException
public void load(Reader reader)throws IOException
public void loadFromXML(InputStream in)
       throws IOException,InvalidPropertiesFormatException

load方法可以讀取多種類型的字符串流,包括XML,這里只介紹簡單的文本結構,以下格式均合法:

Truth = Beauty
Truth =
Truth:Beauty
Truth   :Beauty

2.創建配置文本

配置文件的格式為 key = value 形式,可以空行,value也可以為空(獲取數據時值為null)。#為注釋,可被忽略。

例:dataSource.properties

#數據庫連接字符串
URL = jdbc:oracle:thin:@127.0.0.1:1521:myOrcl
userName = oracle
passWord = oracle

3.使用java程序讀取信息

因為java.util.Properties類中load方法返回的時Map類型數據,所以只要載入配置文件,就可以直接當做Map類型數據來調用了。

例:MyTest.java

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

Class MyTest{
  public static void initDS() {
    FileInputStream inStream = null;
    try {
      inStream = new FileInputStream("dataSource.properties");
      Properties prop = new Properties();
      prop.load(inStream);
      String URL = prop.getProperty("URL");
      String userName = prop.getProperty("userName");
      String passWord = prop.getProperty("passWord");
      System.out.println(URL);
      System.out.println(userName);
      System.out.println(passWord);
    } catch (IOException ex) {
      ex.printStackTrace();
    } finally {
      if (inStream != null) {
        try {
          inStream.close();
        } catch (IOException e) {
        }
      }
    }
  }
}

4.關於漢字的讀取

InputStream是通過二進制流讀取數據,而InputStreamReader則通過字節讀取數據,Properties提供了這兩種方法:load(InputStream inStream)load(Reader reader),所以我們只要通過InputStreamReader(InputStream in,String charset)轉換一下就可以保證不會出現亂碼了。

String protParam = "name = 博客園";
Properties prop = new Properties();
prop.load(new InputStreamReader(new ByteArrayInputStream(protParam.getBytes()), "UTF-8"));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM