Где 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. Я имею в виду, работает ли он через определенные PATHS или в определенном ордер?
если да, то как настроить места, которые 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");