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

1. 获取类路径

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

System.getProperty("java.class.path");

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

java -cp .;test.jar Test

2. Jar文件中路径操作

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

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 异常。

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

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

1)相对路径访问

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) 绝对路径访问

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包中的资源文件

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者常至

Hibernate 的延迟加载(懒加载)简介1

13020
来自专栏Java 源码分析

MyBatis笔记二:配置

可以看到我们使用 <properties resource="db.properties"/> 引入了我们的数据据库的配置文件,然后这个标签有两个属性 : r...

18920
来自专栏最高权限比特流

Servlet详细教程

32940
来自专栏智能大石头

新生命开发团队Orm框架XCode v3.5.2009.0714源码发布(圣诞随心大礼包)

忙忙碌碌有一年!做了很多东西,到头来,似乎又什么都没有做。人继续变老,程序继续改进。     这段时间从我们各个系统抽取了基础的常用的部分,整理后形成了一个...

22070
来自专栏爱撒谎的男孩

用户管理模块之个人信息修改

1.5K30
来自专栏钟绍威的专栏

从源代码到Runtime发生的重排序编译器重排序指令重排序内存系统重排序阻止重排序

 源代码和Runtime时执行的代码很可能不一样,这是因为编译器、处理器常常会为了追求性能对改变执行顺序。然而改变顺序执行很危险,很有可能使得运行结果和预想的不...

29190
来自专栏前端小叙

koa2使用注意点总结

get请求,ajax传入参数 获取的时候为ctx.request.query.参数名

11220
来自专栏zingpLiu

Python 【web框架】之Flask

flask 是Python实现的轻量级web框架。没有表单,orm等,但扩展性很好。很多Python web开发者十分喜欢。本篇介绍flask的简单使用及其扩展...

15920
来自专栏我的博客

TP入门第七天

Trace信息无法显示,因为信息需要显示在body体内 1、创建数据 我们在php的action里面当然也可以使用$_POST以及$_GET获取变量,而TP提供...

29840
来自专栏技术专栏

慕课网Flask高级编程实战-3.蓝图、模型与CodeFirst

应该讲一些初始化工作,放在对应层级的包的初始化文件 __init__.py 中。比如Flask核心应用app对象初始化应该放在应用层级app包的 __init_...

28630

扫码关注云+社区

领取腾讯云代金券