源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-07-27 16:00 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JAVA获取文件绝对路径的方法
本文实例讲述了JAVA获取文件绝对路径的方法。分享给大家供大家参考。具体实现方法如下:
[u]复制代码[/u] 代码如下:
/** * 获取一个类的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程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部