Чистое и простое решение Java 8
Этот простой метод, приведенный ниже, отлично подойдет, если вы используете Java 8:
/**
* Reads given resource file as a string.
*
* @param fileName the path to the resource file
* @return the file's contents or null if the file could not be opened
*/
public String getResourceFileAsString(String fileName) {
InputStream is = getClass().getClassLoader().getResourceAsStream(fileName);
if (is != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
return reader.lines().collect(Collectors.joining(System.lineSeparator()));
}
return null;
}
И он также работает с ресурсами в файлах jar.
Нет необходимости в больших, толстых библиотеках.Если вы уже не используете Guava или Apache Commons IO, добавление этих библиотек в ваш проект просто для возможности чтения файла в виде строки кажется слишком сложным.
Загрузка из статического контекста
Поскольку обычно это служебная функция, возможно, вы захотите, чтобы она была доступна из класса статических утилит.Я немного изменил реализацию, чтобы метод мог быть объявлен как статический.Это работает точно так же.Вот оно:
/**
* Reads given resource file as a string.
*
* @param fileName the path to the resource file
* @return the file's contents or null if the file could not be opened
*/
public static String getResourceFileAsString(String fileName) {
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
InputStream is = classLoader.getResourceAsStream(fileName);
if (is != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
return reader.lines().collect(Collectors.joining(System.lineSeparator()));
}
return null;
}