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