当前位置: 移动技术网 > IT编程>开发语言>Java > JAVA获取文件绝对路径的方法

JAVA获取文件绝对路径的方法

2019年07月22日  | 移动技术网IT编程  | 我要评论

本文实例讲述了java获取文件绝对路径的方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:
/**
* 获取一个类的class文件所在的绝对路径。 这个类可以是jdk自身的类,也可以是用户自定义的类,或者是第三方开发包里的类。
* 只要是在本程序中可以被加载的类,都可以定位到它的class文件的绝对路径。
*
* @param cls
*            一个对象的class属性
* @return 这个类的class文件位置的绝对路径。 如果没有这个类的定义,则返回null。
*/
private string getpathfromclass(class cls) throws ioexception {
     string path = null;
     if (cls == null) {
       throw new nullpointerexception();
     }
     url url = getclasslocationurl(cls);
     if (url != null) {
       path = url.getpath();
       if ("jar".equalsignorecase(url.getprotocol())) {
         try {
           path = new url(path).getpath();
         }
         catch (malformedurlexception e) {
         }
         int location = path.indexof("!/");
         if (location != -1) {
           path = path.substring(0, location);
         }
       }
       file file = new file(path.replaceall("%20"," "));
       path = file.getcanonicalpath();
     }
     return path;
   }
   /**
    * 获取类的class文件位置的url。这个方法是本类最基础的方法,供其它方法调用。
    */
   private url getclasslocationurl(final class cls) {
     if (cls == null) {
       throw new illegalargumentexception("class that input is null");
     }
     url result = null;
     final string clsasresource = cls.getname().replace('.', '/').concat(".class");
     final protectiondomain pd = cls.getprotectiondomain();
     if (pd != null) {
       final codesource cs = 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 = new url("jar:".concat(result.toexternalform()).concat("!/").concat(clsasresource));
             }
             else if (new file(result.getfile()).isdirectory()) {
               result = new url(result, clsasresource);
             }
           }
           catch (malformedurlexception ignore) {
           }
         }
       }
     }
     if (result == null) {
       final classloader clsloader = cls.getclassloader();
       result = clsloader != null ? clsloader.getresource(clsasresource): classloader.getsystemresource(clsasresource);
     }
     return result;
}

希望本文所述对大家的java程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网