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

 更新时间:2015年02月03日 11:39:56   作者:Benjamin_whx  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • 使用Spring Boot集成FastDFS的示例代码

    使用Spring Boot集成FastDFS的示例代码

    本篇文章主要介绍了使用Spring Boot集成FastDFS的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Spring Boot启动时调用自己的非web逻辑

    Spring Boot启动时调用自己的非web逻辑

    在spring Boot中,有些代码是WEB功能,例如API等,但是有些逻辑是非WEB,启动时就要调用并持续运行的,该如何加载自己的非WEB逻辑呢,下面通过实例代码给大家讲解,一起看看吧
    2017-07-07
  • Java IO流相关知识代码解析

    Java IO流相关知识代码解析

    这篇文章主要介绍了Java IO流相关知识代码解析,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • java开发命名规范总结

    java开发命名规范总结

    包名的书写规范 (Package)推荐使用公司或机构的顶级域名为包名的前缀,目的是保证各公司/机构内所使用的包名的唯一性。包名全部为小写字母,且具有实际的区分意义
    2013-10-10
  • java面向对象设计原则之单一职责与依赖倒置原则详解

    java面向对象设计原则之单一职责与依赖倒置原则详解

    这篇文章主要介绍了java面向对象设计原则之单一职责与依赖倒置原则的分析详解,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家多多进步早日升职加薪
    2021-10-10
  • Spring Boot支持HTTPS步骤详解

    Spring Boot支持HTTPS步骤详解

    这篇文章主要介绍了Spring Boot支持HTTPS步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • java创建excel示例(jxl使用方法)

    java创建excel示例(jxl使用方法)

    Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新 已经存在的Excel文件。下面是使用方法,包括去掉网格线、字体设置、单元格设置、对齐方式等设置
    2014-03-03
  • java 实现字节流和字节缓冲流读写文件时间对比

    java 实现字节流和字节缓冲流读写文件时间对比

    这篇文章主要介绍了java 实现字节流和字节缓冲流读写文件时间对比,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • JSON反序列化Long变Integer或Double的问题及解决

    JSON反序列化Long变Integer或Double的问题及解决

    这篇文章主要介绍了JSON反序列化Long变Integer或Double的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • mongo分布式锁Java实现方法(推荐)

    mongo分布式锁Java实现方法(推荐)

    下面小编就为大家带来一篇mongo分布式锁Java实现方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07

最新评论