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程序设计有所帮助。