java 加载资源文件
ClassLoader提供了兩個(gè)方法用于從裝載的類路徑中取得資源:
public URL getResource(String name);
public InputStream getResourceAsStream(String name);
這里name是資源的類路徑,它是相對(duì)與“/”根路徑下的位置。getResource得到的是一個(gè)URL對(duì)象來(lái)定位資源,而getResourceAsStream取得該資源輸入流的引用保證程序可以從正確的位置抽取數(shù)據(jù)。
然而,程序中調(diào)用的通常并不是ClassLoader的這兩個(gè)方法,而是Class的getResource和getResourceAsStream方法,因?yàn)镃lass對(duì)象可以從你的類得到(如YourClass.class或YourClass.getClass()),而ClassLoader則需要再調(diào)用一次YourClass.getClassLoader()方法,但根據(jù)JDK文檔的說(shuō)法,Class對(duì)象的這兩個(gè)方法其實(shí)是“委托”(delegate)給裝載它的ClassLoader來(lái)做的,所以只需要使用Class對(duì)象的這兩個(gè)方法就可以了。
舉例說(shuō)明:
mypackage.Hello.class.getResourceAsStream("/config/config.ini");
從classpath下的config相對(duì)路徑中讀取config.ini
另外一篇
protected InputStream getConfigurationInputStream(String resource) throws HibernateException {
InputStream stream = Environment.class.getResourceAsStream(resource);
if (stream==null) {
throw new Exception(resource + " not found");
}
return stream;
}
client應(yīng)該這么寫(xiě):
//hibernate.cfg.xml位于classes目錄下(classPath目錄)
InputStream stream = getConfigurationInputStream("/hibernate.cfg.xml");
如果資源是.property的配置文件,則可以這么裝載
Properties property=new Properties();
property.load(stream);
總起來(lái)可以這么寫(xiě):
public Properties getPropFromFile(String filePath){
InputStream stream = Environment.class.getResourceAsStream(resource);
if (stream==null) {
throw new Exception(resource + " not found");
}
Properties property=new Properties();
property.load(stream);
return stream;
}
轉(zhuǎn)載于:https://www.cnblogs.com/xinzhuangzi/archive/2010/08/15/4100561.html
總結(jié)
以上是生活随笔為你收集整理的java 加载资源文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 1. 喵喵宠物管理系统需求分析
- 下一篇: Workflow WF Referenc