Class.getResourceAsStream() & ClassLoader的getResourceAsStream()
注意兩點:
1,用Class.getResourceAsStream() 時,路徑應該是以"/"開頭的,如:
mypackage.Hello.class.getResourceAsStream("/config/config.ini");
2,如果直接用ClassLoader的getResourceAsStream() 不用以"/"開頭.如,
mypackage.Hello.class.getResourceAsStream("config/config.ini");
3注意文件放置的位置,應該放在classpath下.如:工程文件中的classes下.
大家自己試試.
"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來做的,