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"));
