Java получает файл как ресурс, когда он находится в папке проекта

В настоящее время у меня есть проект в Java, настроенный со следующей структурой каталогов в Eclipse:

И в моем коде у меня есть следующие строки:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("resources/config");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));

Однако InputStream is всегда получает значение null, что приводит к сбою, когда он попадает во вторую строку. Я знаю, что это имеет какое-то отношение к тому, как я настраиваю путь, который он ищет, но я не могу точно понять, почему он не работает.

2 ответа

Ваш файл config находится в вашем проекте, где-то в файловой системе.

Однако Eclipse не помещает его в путь к классам. Чтобы заставить его находиться на пути к классу, щелкните правой кнопкой мыши вашу папку и добавьте ее в качестве исходной папки. Затем Eclipse добавит его в корень пути к классам. Вы можете получить его с помощью

InputStream is = this.getClass().getResourceAsStream("/config");

Eclipse помещает все в исходную папку resources, начиная с корня пути к классам. Поэтому

resources/config

появится в пути к классам как

/config
/qbooksprintfix/FileChecker
/qbooksprintfxi/FilePurgeHandler
/...


Попробуйте использовать InputStream is = this.getClass().getClassLoader().getResource("/resources/config").openStream();

или InputStream is = this.getClass().getClassLoader().getResourceAsStream("/resources/config");

В обоих случаях не забудьте поставить "/" перед "ресурсами"

licensed under cc by-sa 3.0 with attribution.