<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,comments - 227,trackbacks - 0
    /**
        * 獲取一個類的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。這個方法是本類最基礎(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;
       }

    posted on 2011-05-27 13:05 SIMONE 閱讀(2193) 評論(2)  編輯  收藏 所屬分類: JAVA

    FeedBack:
    # re: JAVA 中獲取文件的絕對路徑
    2012-10-18 22:22 | chloe
    如何調(diào)用呢  回復(fù)  更多評論
      
    # re: JAVA 中獲取文件的絕對路徑
    2012-10-18 22:31 | chloe
    測試成功了,傳遞Class對象就可以了,多謝~  回復(fù)  更多評論
      
    主站蜘蛛池模板: 日韩欧美一区二区三区免费观看| 亚洲国产成人无码av在线播放| 亚洲三级高清免费| 国产一区二区三区免费观在线| 亚洲人成网站在线在线观看| 亚洲高清日韩精品第一区 | 亚洲国产美女视频| 国产成人亚洲综合无码精品| 亚洲av手机在线观看| 女人18毛片a级毛片免费| 57pao国产成视频免费播放| 国产中文字幕在线免费观看| 日韩久久无码免费毛片软件| 亚洲精品久久无码av片俺去也| 亚洲xxxxxx| 亚洲成a人片毛片在线| 久久精品国产亚洲AV香蕉| 久久久久亚洲精品美女| 亚洲级αV无码毛片久久精品| 国产精品亚洲综合一区| 免费国产在线观看不卡| 国产a级特黄的片子视频免费| 黄网址在线永久免费观看| 成人免费在线视频| 嫩草视频在线免费观看| 成年18网站免费视频网站| 最近最好的中文字幕2019免费| 永久免费的网站在线观看| 男男AV纯肉无码免费播放无码| 18勿入网站免费永久| 114一级毛片免费| 日韩精品成人无码专区免费| 最近免费中文字幕4| 日本免费一区二区三区最新vr| 国内一级一级毛片a免费| 欧洲精品免费一区二区三区 | 国产精品亚洲四区在线观看| 色在线亚洲视频www| 亚洲码欧美码一区二区三区| 亚洲AV无码男人的天堂| 黄色网页免费观看|