getResourceAsStream(file)在哪里搜索文件?
我对getResourceAsStream()
感到困惑;
我的包结构如下:
\src |__ net.floodlightcontroller // invoked getResourceAsStream() here |__ ... |__ resources |__ floodlightdefault.properties //target |__ ...
我想从floodlightdefault.properties中读取。 这是我的代码,位于net.floodlightcontroller
包中:
package net.floodlightcontroller.core.module; // ... InputStream is = this.getClass().getClassLoader() .getResourceAsStream("floodlightdefault.properties");
但它失败了,得到的is == null
。 所以我想知道getResourceAsStream(file)
究竟是如何搜索file
。 我的意思是它是通过某些PATH
还是以某种顺序工作 ?
如果是这样,如何配置getResourceAsStream()
查找的位置?
谢谢!
当您调用this.getClass().getClassLoader().getResourceAsStream(File)
,Java会在与this
指示的类相同的目录中查找该文件。 因此,如果您的文件结构是:
\src |__ net.floodlightcontroller.core.module |__ Foo.java |__ ... |__ resources |__ floodlightdefault.properties //target |__ ...
然后你会打电话:
InputStream is = Foo.class.getClassLoader() .getResourceAsStream("..\..\..\resources\floodlightdefault.properties");
更好的是,将包结构更改为:
\src |__ net.floodlightcontroller.core.module |__ Foo.java |__ floodlightdefault.properties //target |__ ...
并致电:
InputStream is = Foo.class.getClassLoader() .getResourceAsStream("floodlightdefault.properties");