Передача пути к файлу в FileReader

Используя Netbeans, я пытаюсь упаковать некоторые ресурсы текстовых файлов, которые считываются FileReader, в файл JAR, но, поскольку текстовые файлы не находятся в папке ресурсов, JAR не может их найти. Как я могу сказать читателю, где искать файлы? (Например, "/src/resources/maps/level1.txt" в моем случае.)

В настоящее время текстовые файлы хранятся в папке проекта и могут быть прочитаны оттуда с помощью "filename.txt"

1 ответ

Хм. это звучит как два вопроса. Во-первых, ресурсы упаковываются в JAR-файл и не могут быть прочитаны напрямую как файлы (да, вы можете выполнять классы в режиме "разнесенного" каталога, но ваш код не должен зависеть от этого). После того как вы сгенерировали JAR-файл, содержащий ваши классы и ресурсы, вы можете получить доступ к ресурсу с помощью InputStreamReader, а не FileReader

new InputStreamReader(this.getClass().getResourceAsStream("/maps/level1.txt"));

Причина, по которой метод getResourceAsStream() находится в объекте Class, заключается в том, что иногда ресурсы размещаются в одном пакете с классом. С помощью..

this.getClass().getResourceAsStream("level1.txt") 

без / slash в начале пути, это попыталось бы найти это в том же пакете, что и объект "this".

Когда ресурсы находятся в корневом пакете или имеют собственную структуру каталогов, например /maps/. Вы можете вызвать this.getClass() для любого класса (в том же загрузчике классов), чтобы найти ресурс.

Другие вопросы по тегам