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

网友投稿 478 2023-08-04


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

本文实例讲述了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();

      http:// result = clsLoader != null ? clsLoader.getResource(clsAsResource): ClassLoader.getSystemResource(clsAsResource);

     }

     return result;

}

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java反射简单实例
下一篇:JDBC对MySQL数据库布尔字段的操作方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~