Как прочитать файл в папке ресурсов - PullRequest
0 голосов
/ 01 января 2019

Java и IntelliJ новичок здесь. Извините, если на этот вопрос уже был дан ответ, но я не могу найти ответ.

Структура моего проекта такая, как показано ниже:

project

Я пытаюсь понять, как читать содержимое выделенного файла сохраненного файла Query.txt в виде одной строки.Это должно быть просто, и я пробовал несколько методов, включающих getClass и так далее, но пока ничего не получалось.Буду признателен за любые рекомендации, спасибо.

Ответы [ 3 ]

0 голосов
/ 01 января 2019
getClass().getResource("/resources/etc.txt")

Поместите папку ресурсов в цель

0 голосов
/ 01 января 2019

Существует два способа получения ресурса:

  1. Путем абсолютный , но это не очень хороший способ, потому что абсолютные пути ненадежны, но это хорошодля «дымового» тестирования
  2. по относительному пути, и снова есть два пути.

В обоих случаях вы можете использовать getClass().getResource(path) конструкцию.

Относительные пути:

  1. Если ваш ресурс находится в корневом каталоге ресурса dir, ваш путь должен начинаться с /: "/etc.txt" Где файл и т. Д. Хранятся в каталоге ресурсов.

Для вашего примера на картинке ваш путь будет: /queries/storedQueries.txt

Если ваши ресурсы находятся в каталоге ресурсов, но в плоских каталогах, так же, как пакеты для класса, который вы вызываете .getResource(path), например:

resources/com/pe/queries/etc.txt

Ваш путьне должен включать начальный '/': getClass().getResource("com/pe/queries/etc.txt")

Это потому, что когда ваша система сборки (ваш maven) будет собирать проект, он помещает ваш ресурс в 'root' jar, если вы храните его в root изкаталог ресурсов или, если вы храните как resources/com/pe/queries/etc.txt, создаете внутри jar com/pe/queries/ и помещаете его внутрь.

Извините за мой английский, надеюсь, я помогу вам понять, как он работает.

PS Я написал эту статью, она на русском языке, но вы можете перевести ее с помощью Google-transate (я пытался, и это понятно), есть больше примеров и объяснений внутри.

Статья о ресурсах на русском языке

Удачи!

0 голосов
/ 01 января 2019

Вы можете прочитать файл, используя текущий загрузчик классов, но перед этим вам нужно немного исправить структуру.Когда вы используете ClassLoader для чтения файла, по умолчанию он просматривает тот же пакет, к которому принадлежит.

Шаг 1. Создание нового пакета com.pe.queriesШаг 2: Создайте класс Package-Info.java в вышеуказанном пакетеШаг 3: Создайте новые вложенные каталоги в resources как resources/com/pe/queries и переместите файл в этот каталог.Шаг 4: Наконец, вы сможете прочитать файл как Package-Info.class.getResource("storedQueries.txt");

...