程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA獲得文件相對途徑的辦法

JAVA獲得文件相對途徑的辦法

編輯:關於JAVA

JAVA獲得文件相對途徑的辦法。本站提示廣大學習愛好者:(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法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved