Бывает нужно сохранить какие-то ресурсы внутри JAR-файла, чтобы на любой машине у программы был к ним доступ. Сделать это можно следующим образом:
- Создаем каталог
src/main/resources
. - Кладем в него нужный текстовый файл.
- Забираем файл в коде:
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()));
}