getResourceAsStream(path):path 不以’/'开头时表示是从此类所在的包下取资源,以’/'开头则是从类根路径下获取。
现假设有一个类(Test.java)要读取配置文件。
何为类根路径:说白了就是‘src/’,像'src/Qq.txt',Qq.txt就处于类根路径下;像‘src/com/Tt.java’,Tt.java就不是在类根路径下。
1.路径:src/aa.xml
<span style="font-size:18px;">读取该路径下的aa.xml文件:InputStream is=Test.class.getResourceAsStream("/aa.xml");//表示从类根路径根下读取文件
</span>
2..位于src下同一个包下:
src/com/zsj/Test.java,src/com/zsj/aa.xml
如果此时用上面的方法,则会报错,找不到文件,因为aa.xml和Test.java是位于同一个包下。位于同一个包下的资源可以采用下面的方式,若果不是同一个包下,请参照第3种方式。
<span style="font-size:18px;">(1)InputStream is=Test.class.getResourceAsStream("aa.xml");//表示从此类所在的包路径下读取文件
</span>
3.位于src下不同包:
src/com/one.java,src/cn/aa.xml
<span style="font-size:18px;">InputStream is=Test.class.getResourceAsStream("/cn/aa.xml");//读取与加载类位置不一致时的资源文件 </span>
4.Class.getClassLoader.getResourceAsStream(String path) :只能从类根路径下获取,path不能以’/'开头