当前位置: 首页 > 编程笔记 >

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

廖诚
2023-03-14
本文向大家介绍JAVA获取文件绝对路径的方法,包括了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();

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

     }

     return result;

}

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

 类似资料:
  • 本文向大家介绍获取Java中文件的绝对路径,包括了获取Java中文件的绝对路径的使用技巧和注意事项,需要的朋友参考一下 方法java.io.File.getAbsolutePath()用于获取字符串形式的文件的绝对路径。此方法不需要任何参数。 演示此的程序如下所示- 示例 上面程序的输出如下- 输出结果 现在让我们了解上面的程序。 使用方法java.io.File.getAbsolutePath(

  • 本文向大家介绍获取Java中目录或文件的绝对路径,包括了获取Java中目录或文件的绝对路径的使用技巧和注意事项,需要的朋友参考一下 方法java.io.File.getAbsolutePath()用于获取字符串形式的文件或目录的绝对路径名。此方法不需要任何参数。 演示此的程序如下所示- 示例 上面程序的输出如下- 输出结果 现在让我们了解上面的程序。 使用方法java.io.File.getAbs

  • 问题内容: 是否有任何API可以从绝对文件路径检索文件名? 例如来自 我知道它可以像字符串操作一样工作, 但是我想知道还有没有像Java 这样的“正式”方式可以做到这一点。 NodeJS从绝对路径获取文件名? 问题答案: 使用模块的方法: 这是上面示例的文档。

  • 问题内容: 我正在尝试在当前包外部的路径中运行exe文件。我运行它的code.java文件在 但是exe所在的目录 如果可能的话,似乎最好的解决方案是获取Project的绝对路径,然后在其中添加“ src \ main \ resources \”。有什么好方法吗?或者有替代的解决方案?我正在使用Eclipse,但如果也可以在其他IDE中使用它,那就太好了。谢谢你的帮助。 问题答案: 解决此问题的

  • 我也试着做 而我不断得到这个结果。