解决资源路径问题

一、先了解2个概念(绝对路径和相对路径)

1.绝对路径:从盘符开始的路径字串

例如:C:\Users\Public\Pictures

2.相对路径:文件相对于Java虚拟机启动目录的位置

分为一下2种情况

1>在命令行方式下执行(即初学时在命令行使用的java 类文件)

启动目录是命令解释器的当前目录(即“>”前面的一串)

 2>使用集成开发环境(即IDE,常见的就是InteliJ IDEA,Eclipse)

启动目录由IDE控制,使用下面的代码获取此目录的位置,也是一个从盘符开始的位置

String string=System.getProperty("user.dir");

 使用eclipse得到的结果:workspace是工作空间,demo是我的项目名称

使用Idea得到的结果 :Java_Test是存储目录,test是我的项目名称

二、怎么使用相对路径

绝对路径很方便写,直接从盘符开始,但为了方便,我们一般采用相对路径来描述资源文件的位置

1.常规使用:

例如:

 File file = new File("Test.xml");

在eclipse中获取的是项目路径下的文件(不在src里面)

在Idea获取的Resources目录下的文件,(idea对Resources目录进行过修改,所有相对路径都从Resources目录开始加载,所以不需要像eclipse一样考虑加载路径的问题)

2.反射使用:

此处不关注细节,只讨论获取资源的方法

通过"类.class"获取类的Class对象,

调用getResourceAsStream(“文件名”)获取与此类同级路径下的资源

eclipse:

idea:无论如何都会从Resources目录开始加载

 拓展:(只适用于eclipse,idea由于其自身封装的原因

getResourceAsStream与

getClassLoader().getResourceAsStream的加载路径都是Resources目录)

	Class c=Test.class;//获取Class对象
//	从类所在目录开始检索
	URL url = class1.getResource("a.jpg");//获取URL(统一资源定位器)
	InputStream stream = class1.getResourceAsStream("a.jpg");//获取输入流
//	从类的上一级目录开始检索
	InputStream stream = class1.getResourceAsStream("../a.jpg");//获取输入流
//	从Java虚拟机启动目录开始检索(即:System.getProperty("user.dir");)
	InputStream stream4 = class1.getClassLoader().getResourceAsStream("resource/a.jpg");

附加项:路径转义问题

由于windows中路径由反斜杠“\”分隔,所以表示路径时需要使用反斜杠的转义“\\”

但有时需要对路径目录通过反斜杠进行分割,使用String.split()函数,即可返回字符数组,替换也是同样的道理使用“\\\\”替换

String[] strings=string.split("\\\\");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值