我很困惑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
或在某个order?
如果是的话,如何配置这些地方getResourceAsStream()
寻找?
Thx!
你打电话时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");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)