国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

JAVA獲取文件絕對路徑的方法

2019-11-26 15:18:16
字體:
來源:轉載
供稿:網(wǎng)友

本文實例講述了JAVA獲取文件絕對路徑的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

復制代碼 代碼如下:
/**
* 獲取一個類的class文件所在的絕對路徑。 這個類可以是JDK自身的類,也可以是用戶自定義的類,或者是第三方開發(fā)包里的類。
* 只要是在本程序中可以被加載的類,都可以定位到它的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。這個方法是本類最基礎的方法,供其它方法調(diào)用。
    */
   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程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 古丈县| 连江县| 嫩江县| 龙游县| 斗六市| 临西县| 元朗区| 晴隆县| 宜兰市| 孟州市| 庆阳市| 曲麻莱县| 义乌市| 宜春市| 胶州市| 临泉县| 敦化市| 军事| 天峻县| 湖口县| 玉树县| 信阳市| 花莲县| 上虞市| 安阳县| 玛多县| 龙游县| 阿合奇县| 金乡县| 息烽县| 三原县| 榕江县| 镇平县| 会同县| 潮安县| 荃湾区| 新疆| 雅江县| 淮滨县| 富锦市| 东海县|