我对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()
寻找的地点?
THX!
答案 0 :(得分:9)
当您调用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");