this.getclass ().getclassloader() .getresourceasstream(...) 和Properties類 共同使用

this.getclass ().getclassloader() .getresourceasstream(...)

JAVA裏面對於類進行調用配置資源的文件數據,以this.getClass().getResourceAsStream()來讀取比較合適。

路徑採用相對路徑直接可以從工程的path路徑去找。
主要問題是如果類中採用的是靜態塊的話,則該this.getClass()報錯,因爲讀靜態塊時,可能該對象併爲構造,所以用this來指向當前對象不行。


ClassLoader提供了兩個方法用於從裝載的類路徑中取得資源:


public URL getResource(String name);
public InputStream getResourceAsStream(String name);


這裏name是資源的類路徑,它是相對與“/”根路徑下的位置。getResource得到的是一個URL對象來定位資源,而getResourceAsStream取得該資源輸入流的引用保證程序可以從正確的位置抽取數據。


然而,程序中調用的通常並不是ClassLoader的這兩個方法,而是Class的getResource和getResourceAsStream方法,因爲Class對象可以從你的類得到(如YourClass.class或YourClass.getClass()),而ClassLoader則需要再調用一次YourClass.getClassLoader()方法,但根據JDK文檔的說法,Class對象的這兩個方法其實是“委託”(delegate)給裝載它的ClassLoader來做的,所以只需要使用Class對象的這兩個方法就可以了。



Properties類

在java.util 包下面有一個類 Properties,該類主要用於讀取以項目的配置文件(以.properties結尾的文件和xml文件)。
  Properties的構造函數有兩個,一個不帶參數,一個使用一個Properties對象作爲參數。

舉個例子:

try {
Properties prop = new Properties();
prop.load(this.getClass().getClassLoader()
.getResourceAsStream("a.properties"));
String url = prop.getProperty("url");
String www= prop.getProperty("www");
} catch (Exception ex) {
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章