空間站

          北極心空

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

           

          獲取JAVA路徑 包括CLASSPATH外的路徑

          作者: 周建東  日期: 2007-09-10 16:04

          字體大小:

          歸納一些網上取JAVA路徑的方法:

          注明:如果從ANT啟動程序,this.getClass().getResource("")取出來的比較怪,直接用JAVA命令行調試就可成功。

          得到classpath和當前類的絕對路徑的一些方法

          獲得CLASSPATH之外路徑的方法:

            URL base = this.getClass().getResource""); //先獲得本類的所在位置,如/home/popeye/testjava/build/classes/net/ String path = new Filebase.getFile(), "……/……/……/"+name.getCanonicalPath(); //就可以得到/home/popeye/testjava/name

          下面是一些得到classpath和當前類的絕對路徑的一些方法。你可能需要使用其中的一些方法來得到你需要的資源的絕對路徑。

          1.FileTest.class.getResource
          ""

          得到的是當前類FileTest.class文件的URI目錄。不包括自己!

          如:file/D/java/eclipse32/workspace/jbpmtest3/bin/com/test/

          2.FileTest.class.getResource
          "/"

          得到的是當前的classpath的絕對URI路徑。

          如:file/D/java/eclipse32/workspace/jbpmtest3/bin/

          3.Thread.currentThread
          ().getContextClassLoader().getResource""

          得到的也是當前ClassPath的絕對URI路徑。

          如:file/D/java/eclipse32/workspace/jbpmtest3/bin/

          4.FileTest.class.getClassLoader
          ().getResource""

          得到的也是當前ClassPath的絕對URI路徑。

          如:file/D/java/eclipse32/workspace/jbpmtest3/bin/

          5.ClassLoader.getSystemResource
          ""

          得到的也是當前ClassPath的絕對URI路徑。

          如:file/D/java/eclipse32/workspace/jbpmtest3/bin/

          我推薦使用Thread.currentThread().getContextClassLoader().getResource"")來得到當前的classpath的絕對路徑的URI表示法。

          Web應用程序中,我們一般通過ServletContext.getRealPath"/")方法得到Web應用程序的根目錄的絕對路徑。這樣,我們只需要提供相對于Web應用程序根目錄的路徑,就可以構建出定位資源的絕對路徑。

          注意點:

          1.
          盡量不要使用相對于System.getProperty"user.dir")當前用戶目錄的相對路徑。這是一顆定時炸彈,隨時可能要你的命。

          2.
          盡量使用URI形式的絕對路徑資源。它可以很容易的轉變為URIURLFile對象。

          3.
          盡量使用相對classpath的相對路徑。不要使用絕對路徑。使用上面ClassLoaderUtil類的public static URL getExtendResourceString relativePath)方法已經能夠使用相對于classpath的相對路徑定位所有位置的資源。

          4.
          絕對不要使用硬編碼的絕對路徑。因為,我們完全可以使用ClassLoader類的getResource"")方法得到當前classpath的絕對路徑。

          使用硬編碼的絕對路徑是完全沒有必要的!它一定會讓你死的很難看!程序將無法移植!

          如果你一定要指定一個絕對路徑,那么使用配置文件,也比硬編碼要好得多!

          當然,我還是推薦你使用程序得到classpath的絕對路徑來拼資源的絕對路徑

          引用通告地址: http://tmsoft.lsxy.com/trackback.php?tbID=422&extra=f48f99

          posted on 2007-10-11 11:47 蘆葦 閱讀(1111) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 甘肃省| 郁南县| 鄄城县| 宁强县| 彭阳县| 永川市| 东明县| 施秉县| 朝阳区| 安乡县| 高陵县| 宝兴县| 康保县| 庆安县| 鸡西市| 大名县| 秦皇岛市| 宿州市| 海安县| 博野县| 泽普县| 崇左市| 夏邑县| 长春市| 波密县| 江北区| 额尔古纳市| 柳州市| 怀安县| 蕲春县| 五家渠市| 彭泽县| 新干县| 泸西县| 榆社县| 浦江县| 三台县| 景洪市| 正宁县| 融水| 怀仁县|