只能定位到classpath下的资源。
如果,它能够接受“../”这样的参数,允许我们用相对路径来定位classpath外面的资源,那么我们就可以定位位置的资源!
当然,我无法修改ClassLoader类的这个方法,于是,我编写了一个助手类ClassLoaderUtil类,提供了[public static URL getExtendResource(String relativePath)]这个方法。它能够接受带有“../”符号的相对路径,实现了自由寻找资源的功能。
Java?斤揃抄儖峽(4)
扮寂:2011-01-29 葡叫措
宥狛?斤classpath揃抄糞?徭喇儖孀彿坿議廁返窃議坿旗鷹?
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*@author葡叫措shendl_s@hotmail.com
*Nov29,2006 10:34:34AM
*喘栖紗墮窃?classpath和議彿坿猟周?奉來猟周吉。
*getExtendResource(StringrelativePath)圭隈?
*辛參聞喘../憲催栖紗墮classpath翌何議彿坿。
*/
publicclass ClassLoaderUtil {
privatestatic Log log=LogFactory.getLog(ClassLoaderUtil.class);
/**
*Thread.currentThread().getContextClassLoader().getResource("")
*/
/**
*紗墮Java窃。 聞喘畠?協窃兆
*@paramclassName
*@return
*/
publicstatic Class loadClass(String className) {
try {
return getClassLoader().loadClass(className);
} catch (ClassNotFoundException e) {
thrownew RuntimeException("class not found ''"+className+"''", e);
}
}
/**
*誼欺窃紗墮匂
*@return
*/
publicstatic ClassLoader getClassLoader() {
return ClassLoaderUtil.class.getClassLoader();
}
/**
*戻工?斤噐classpath議彿坿揃抄?卦指猟周議補秘送
*@paramrelativePath駅倬勧弓彿坿議?斤揃抄。
*@頁?斤噐classpath議揃抄。
*@泌惚俶勣臥孀classpath翌何議彿坿?俶勣聞喘../栖臥孀
*@return 猟周補秘送
*@throwsIOException
*@throwsMalformedURLException
*/
publicstatic InputStream getStream(String relativePath)
throws MalformedURLException, IOException {
if(!relativePath.contains("../")){
return getClassLoader().getResourceAsStream(relativePath);
}else{
return ClassLoaderUtil.getStreamByExtendResource(relativePath);
}
}
/**
*
*@paramurl
*@return
*@throwsIOException
*/
publicstatic InputStream getStream(URL url) throws IOException{
if(url!=null){
return url.openStream();
}else{
returnnull;
}
}
/**
*
*@paramrelativePath駅倬勧弓彿坿議?斤揃抄。頁?斤噐classpath議揃抄。
*@泌惚俶勣臥孀classpath翌何議彿坿?俶勣聞喘../栖臥孀
*@return
*@throwsMalformedURLException
*@throwsIOException
*/
publicstatic InputStream getStreamByExtendResource(String relativePath)
throws MalformedURLException, IOException{
|