posts - 1,  comments - 25,  trackbacks - 0
这两天又做了个Execute Jar Project.

觉得以前的Path的知识都忘的差不多了,决定自己总结一下。

1. 获取类路径

    返回类路径内容,一般为:lib1.jar;lib2.jar。

1System.getProperty("java.class.path");
     在命令行运行Java程序时,上面的代码将会返回"-cp"参数内容,例如,执行下面的命令返回".;test.jar":
1java -cp .;test.jar Test


2. Jar文件中路径操作

2.1 获取当前代码所在Jar包的绝对路径

1File f = new File(Test.class.getProtectionDomain().getCodeSource().getLocation().getPath());
2//Jar包绝对路径
3System.out.println(f.getAbsolutePath());
4//Jar包所在目录
5System.out.println(f.getParent());

     需要注意的是,如果在java命令后添加如下参数启动安全管理器,并且安全策略文件中没有getProtectionDomain权限,则上述代码会抛出SecurityException 异常。

1java -Djava.security.manager  -Djava.security.policy=="安全策略文件绝对路径"


2.2 读取当前代码所在Jar包中的资源文件

1)相对路径访问

    

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}

    如果待读取资源文件在当前类的package下,则可以使用相对路径定位资源文件。上面的例子中,test.txt文件和Test类同处在test package下面,相对路径为test.txt。

2) 绝对路径访问

    

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}
      如果待读取资源文件和当前类不在同一个package下,则可以使用绝对路径定位资源文件。上面的例子中,test.txt资源文件处在resource package下面,绝对路径为/resource/test.txt。

    切记: /开头是从根下找, 没有/开头是相对路径

2.3 读取当其它Jar包中的资源文件

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

posted on 2013-04-05 13:38 Daniel 阅读(383) 评论(1)  编辑  收藏 所属分类: CoreJava

FeedBack:
# re: Java Path[未登录]
2016-03-31 09:30 | coder
Very helpful, 3ks a lot  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(3)

随笔档案

文章分类

文章档案

相册

搜索

  •  

最新评论