Java获取资源路径的常用方法

通过getResource()方法

在Java中通常使用Class.getResource(String path)方法获取相关文件的URI,但使用的时候一定要注意参数。若以"/"开头,则路径以.class文件的最外层的包路径起始,否则均以.class文件当前所在目录起始。

下面举例说明。若文件结构如下:

/root
	├─ /target
		├─ /classes
			├─ /foo
			|-	├─ bar
			|-	|-	├─TestResource.class 
			├─ resource.png

则在TestResource类中使用如下方法返回值分别为:

TestResource.class.getResource("/").toString();  // 返回 file:/root/target/classes
TestResource.class.getResource("./").toString();  // 返回 file:/root/target/classes/foo/bar
TestResource.class.getResource("").toString();  // 返回 file:/root/target/classes/foo/bar
TestResource.class.getResource("/resource.png").toString();
 // 返回 file:/root/target/classes/resource.png
TestResource.class.getResource("./resource.png").toString();  
// 报NullPointerException,因为class文件同级目录下并无该文件

此处注意file为URL的Protocol,可以通过getProtocol()方法获取,从而截去。若打包为jar包,则protocol为jar,其中的路径仍然还会包含file,如jar:file:/path/to/jar/xxx.jar!/fileName

通过new File()方法

还有一个小技巧就是可以通过新建一个文件对象(仅仅是文件对象,并不要求有该文件),来定位整个Project的根路径。

File temp = new File("");
System.out.println(temp.getAbsolutePath());
// 直接返回项目根路径,即 /root

若项目打包为jar,则路径就是jar包所在的路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值