JAVA获取文件绝对路径的方法
本文实例讲述了JAVA获取文件绝对路径的方法。分享给大家供大家参考。具体实现方法如下:
/**
*获取一个类的class文件所在的绝对路径。这个类可以是JDK自身的类,也可以是用户自定义的类,或者是第三方开发包里的类。
*只要是在本程序中可以被加载的类,都可以定位到它的class文件的绝对路径。
*
*@paramcls
* 一个对象的Class属性
*@return这个类的class文件位置的绝对路径。如果没有这个类的定义,则返回null。
*/
privateStringgetPathFromClass(Classcls)throwsIOException{
Stringpath=null;
if(cls==null){
thrownewNullPointerException();
}
URLurl=getClassLocationURL(cls);
if(url!=null){
path=url.getPath();
if("jar".equalsIgnoreCase(url.getProtocol())){
try{
path=newURL(path).getPath();
}
catch(MalformedURLExceptione){
}
intlocation=path.indexOf("!/");
if(location!=-1){
path=path.substring(0,location);
}
}
Filefile=newFile(path.replaceAll("%20",""));
path=file.getCanonicalPath();
}
returnpath;
}
/**
*获取类的class文件位置的URL。这个方法是本类最基础的方法,供其它方法调用。
*/
privateURLgetClassLocationURL(finalClasscls){
if(cls==null){
thrownewIllegalArgumentException("classthatinputisnull");
}
URLresult=null;
finalStringclsAsResource=cls.getName().replace('.','/').concat(".class");
finalProtectionDomainpd=cls.getProtectionDomain();
if(pd!=null){
finalCodeSourcecs=pd.getCodeSource();
if(cs!=null){
result=cs.getLocation();
}
if(result!=null){
if("file".equals(result.getProtocol())){
try{
if(result.toExternalForm().endsWith(".jar")||result.toExternalForm().endsWith(".zip")){
result=newURL("jar:".concat(result.toExternalForm()).concat("!/").concat(clsAsResource));
}
elseif(newFile(result.getFile()).isDirectory()){
result=newURL(result,clsAsResource);
}
}
catch(MalformedURLExceptionignore){
}
}
}
}
if(result==null){
finalClassLoaderclsLoader=cls.getClassLoader();
result=clsLoader!=null?clsLoader.getResource(clsAsResource):ClassLoader.getSystemResource(clsAsResource);
}
returnresult;
}
希望本文所述对大家的Java程序设计有所帮助。