我被 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
s 还是按一定的顺序?如果是这样,如何配置
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");
关于java - getResourceAsStream(file) 在哪里搜索文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570608/