前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础 - 常用路径操作总结

Java基础 - 常用路径操作总结

作者头像
joymufeng
发布2018-05-17 15:12:44
6370
发布2018-05-17 15:12:44
举报

1. 获取类路径

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

代码语言:javascript
复制
System.getProperty("java.class.path");

 在命令行运行Java程序时,上面的代码将会返回"-cp"参数内容,例如,执行下面的命令返回".;test.jar":

代码语言:javascript
复制
java -cp .;test.jar Test

2. Jar文件中路径操作

2.1 获取当前代码所在Jar包的绝对路径
代码语言:javascript
复制
File f = new File(Test.class.getProtectionDomain().getCodeSource().getLocation().getPath());
//Jar包绝对路径
System.out.println(f.getAbsolutePath());
//Jar包所在目录
System.out.println(f.getParent());

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

代码语言:javascript
复制
java -Djava.security.manager  -Djava.security.policy=="安全策略文件绝对路径"
2.2 读取当前代码所在Jar包中的资源文件

1)相对路径访问

代码语言:javascript
复制
public class Test {
	public static void main(String[] args) throws Exception {
		InputStream is1 = Test.class.getResourceAsStream("test.txt");
		InputStream is2 = Test.class.getResource("test.txt").openStream();
	}
}

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

2) 绝对路径访问

代码语言:javascript
复制
public class Test {
	public static void main(String[] args) throws Exception {
		InputStream is1 = Test.class.getResourceAsStream("/resource/test.txt");
		InputStream is2 = Test.class.getResource("/resource/test.txt").openStream();
	}
}

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

2.3 读取当其它Jar包中的资源文件
代码语言:javascript
复制
InputStream is = new URL("jar:file:/C:/test.jar!/test/test.txt").openStream();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 获取类路径
  • 2. Jar文件中路径操作
    • 2.1 获取当前代码所在Jar包的绝对路径
      • 2.2 读取当前代码所在Jar包中的资源文件
        • 2.3 读取当其它Jar包中的资源文件
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档