欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-31 17:23:04
本文实例讲述了java获取文件绝对路径的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:/** * 获取一个类的class文件所在的绝对路径。 这个...

本文实例讲述了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程序设计有所帮助。