posts - 1,  comments - 25,  trackbacks - 0
          這兩天又做了個(gè)Execute Jar Project.

          覺(jué)得以前的Path的知識(shí)都忘的差不多了,決定自己總結(jié)一下。

          1. 獲取類(lèi)路徑

              返回類(lèi)路徑內(nèi)容,一般為:lib1.jar;lib2.jar。

          1System.getProperty("java.class.path");
               在命令行運(yùn)行Java程序時(shí),上面的代碼將會(huì)返回"-cp"參數(shù)內(nèi)容,例如,執(zhí)行下面的命令返回".;test.jar":
          1java -cp .;test.jar Test


          2. Jar文件中路徑操作

          2.1 獲取當(dāng)前代碼所在Jar包的絕對(duì)路徑

          1File f = new File(Test.class.getProtectionDomain().getCodeSource().getLocation().getPath());
          2//Jar包絕對(duì)路徑
          3System.out.println(f.getAbsolutePath());
          4//Jar包所在目錄
          5System.out.println(f.getParent());

               需要注意的是,如果在java命令后添加如下參數(shù)啟動(dòng)安全管理器,并且安全策略文件中沒(méi)有getProtectionDomain權(quán)限,則上述代碼會(huì)拋出SecurityException 異常。

          1java -Djava.security.manager  -Djava.security.policy=="安全策略文件絕對(duì)路徑"


          2.2 讀取當(dāng)前代碼所在Jar包中的資源文件

          1)相對(duì)路徑訪(fǎng)問(wèn)

              

          1public class Test {
          2    public static void main(String[] args) throws Exception {
          3        InputStream is1 = Test.class.getResourceAsStream("test.txt");
          4        InputStream is2 = Test.class.getResource("test.txt").openStream();
          5    }
          6}

              如果待讀取資源文件在當(dāng)前類(lèi)的package下,則可以使用相對(duì)路徑定位資源文件。上面的例子中,test.txt文件和Test類(lèi)同處在test package下面,相對(duì)路徑為test.txt。

          2) 絕對(duì)路徑訪(fǎng)問(wèn)

              

          1public class Test {
          2    public static void main(String[] args) throws Exception {
          3        InputStream is1 = Test.class.getResourceAsStream("/resource/test.txt");
          4        InputStream is2 = Test.class.getResource("/resource/test.txt").openStream();
          5    }
          6}
                如果待讀取資源文件和當(dāng)前類(lèi)不在同一個(gè)package下,則可以使用絕對(duì)路徑定位資源文件。上面的例子中,test.txt資源文件處在resource package下面,絕對(duì)路徑為/resource/test.txt。

              切記: /開(kāi)頭是從根下找, 沒(méi)有/開(kāi)頭是相對(duì)路徑

          2.3 讀取當(dāng)其它Jar包中的資源文件

          1InputStream is = new URL("jar:file:/C:/test.jar!/test/test.txt").openStream();

          posted on 2013-04-05 13:38 Daniel 閱讀(407) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): CoreJava

          FeedBack:
          # re: Java Path[未登錄](méi)
          2016-03-31 09:30 | coder
          Very helpful, 3ks a lot  回復(fù)  更多評(píng)論
            
          <2016年3月>
          282912345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          相冊(cè)

          搜索

          •  

          最新評(píng)論

          主站蜘蛛池模板: 四平市| 泰安市| 桑日县| 保亭| 上饶市| 屯昌县| 荆门市| 海原县| 尚志市| 金乡县| 宜宾市| 水城县| 商城县| 绿春县| 和平县| 蕲春县| 鄢陵县| 闽侯县| 晋江市| 铁岭县| 庆阳市| 韩城市| 泸定县| 射洪县| 青冈县| 乌审旗| 达尔| 镇平县| 明星| 垦利县| 泾川县| 浦东新区| 道真| 邵武市| 海丰县| 邛崃市| 山阳县| 镇安县| 安新县| 买车| 大关县|