class.getClassLoader().getResourceAsStream和class.getResourceAsStream的区别

getClassLoader是用来加载java类的,类加载器就是负责把class文件加载进内存中.

如果有如下文件路径:src/com/test/a.xml , src/com/test/Demo.class

在Demo类中关联a.xml文件,获取输入流对象:

//下面是正确的两种写法
InputStream is = Demo.class.getClassLoader().getResourceAsStream("com/test/a.xml");
InputStream is = Demo.class.getResourceAsStream("a.xml");
//下面两种是错误的
InputStream is = Demo.class.getClassLoader().getResourceAsStream("/com/test/a.xml");
InputStream is = Demo.class.getResourceAsStream("/a.xml");

如果有如下文件路径: src/a.xml 和src/com/test/Demo.class

以下三种都是正确的
InputStream is = Demo.class.getClassLoader().getResourceAsStream("a.xml");
//        /符号就表示src目录
InputStream is = Demo.class.getResourceAsStream("/a.xml"); 
//         ../ 符号表示上一级目录 ../../是上一级的上一级,也就到达了src目录下了
InputStream is = Demo.class.getResourceAsStream("../../a.xml");

总结: class.getClassLoader().getResourceAsStream()默认路径已经是src下了,

如果配置文件就在src下,那直接写文件名a.xml就可以.
如果配置文件不在src下,那么就从写相对于src下的路径名就可以了,比如上面的com/test/a.xml
**切记不可以在路径最前面加 / **

class.getResourceAsStream() 默认路径就是当前类的路径,比如上面的Demo.class在src/com/test/下,那么这里就是默认路径.

如果配置文件在src下, 方法一是使用 …/ 来一层一层往上到达src目录下即可
如果配置文件在当前类的同一个目录下,那么直接使用文件名就可以了,因为默认路径已经是当前目录了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值