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目录下即可
如果配置文件在当前类的同一个目录下,那么直接使用文件名就可以了,因为默认路径已经是当前目录了