Где getResourceAsStream (файл) выполняет поиск файла?
Я запутался getResourceAsStream()
;
моя структура пакета выглядит так:
src
|__ net.floodlightcontroller // invoked getResourceAsStream() here
|__ ...
|__ resources
|__ floodlightdefault.properties //target
|__ ...
и я хочу прочитать из floodlightdefault.свойства. Вот мой код, лежащий в :
package net.floodlightcontroller.core.module;
// ...
InputStream is = this.getClass().getClassLoader()
.getResourceAsStream("floodlightdefault.properties");
но это не удалось, становится is == null
. Поэтому мне интересно, как именно getResourceAsStream(file)
искать file
. Я имею в виду, работает ли он через определенные PATH
S или в определенном ордер?
если да, то как настроить места, которые getResourceAsStream()
ищет?
Thx!
1 ответов
когда вы называете 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");