欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA獲取文件絕對(duì)路徑的方法

 更新時(shí)間:2015年02月03日 11:39:56   作者:Benjamin_whx  
這篇文章主要介紹了JAVA獲取文件絕對(duì)路徑的方法,涉及針對(duì)文件路徑的操作技巧,需要的朋友可以參考下

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

復(fù)制代碼 代碼如下:
/**
* 獲取一個(gè)類的class文件所在的絕對(duì)路徑。 這個(gè)類可以是JDK自身的類,也可以是用戶自定義的類,或者是第三方開(kāi)發(fā)包里的類。
* 只要是在本程序中可以被加載的類,都可以定位到它的class文件的絕對(duì)路徑。
*
* @param cls
*            一個(gè)對(duì)象的Class屬性
* @return 這個(gè)類的class文件位置的絕對(duì)路徑。 如果沒(méi)有這個(gè)類的定義,則返回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。這個(gè)方法是本類最基礎(chǔ)的方法,供其它方法調(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;
}

希望本文所述對(duì)大家的Java程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論