Как хранить текстовые ресурсы внутри JAR | Zhbert’s Home
Zhbert's Home
Домашняя страничка Zhbert'а

Как хранить текстовые ресурсы внутри JAR

СТАТЬИ / JAVA / КАК ХРАНИТЬ ТЕКСТОВЫЕ РЕСУРСЫ ВНУТРИ JAR

Бывает нужно сохранить какие-то ресурсы внутри JAR-файла, чтобы на любой машине у программы был к ним доступ. Сделать это можно следующим образом:

  1. Создаем каталог src/main/resources.
  2. Кладем в него нужный текстовый файл.
  3. Забираем файл в коде:
    try (InputStream inputStream = getClass().getResourceAsStream("/input.txt");
      BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
      String contents = reader.lines()
     .collect(Collectors.joining(System.lineSeparator()));
    }
    

Дальше с полученной строкой можно работать как угодно.

Обратите внимание! Здесь указан не полный путь к каталогу, а как будто бы он лежит в корне. Это связано с тем, что при упаковывании в JAR Maven положит файл ресурсов в корень архива, и для доступа к нему нужно обращаться также к корню.

Пример обращения по обычному пути (может не работать в некоторых случаях):

try (FileReader fileReader = new FileReader("src/main/resources/input.txt"); 
   BufferedReader reader = new BufferedReader(fileReader)) {
  String contents = reader.lines()
    .collect(Collectors.joining(System.lineSeparator()));
}