Как прочитать файл ресурсов из war приложения
[Как прочитать файл ресурсов из war приложения]
WAR (Web Archive) — это приложение JavaEE, упакованное в архив и готовое для разворачивания на сервере приложений. В этом файле находятся классы приложения, ресурсные файлы и служебные файлы. Как быть, если вам требуется прочитать файл ресурсов из этого приложения?
Какие файлы можно прочитать из WAR архива
Можно прочитать те файлы, которые в архиве расположены в директории WEB-INF/classes
Как прочитать файл ресурсов из архива WAR
Для того, чтобы прочитать контент ресурсного файла из war архива, сначала требуется получить InputStream этого файла:
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
Если вернувшийся объект не равен null, остаётся вычитать контент любым удобным способом. Например, таким:
StringBuilder sb = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
String line;
while ((line = reader.readLine()) != null) {
sb.append(line).append(System.lineSeparator());
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(sb.toString());
Исходный код
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ReadFileFromWarArchive {
public static void main(String[] args) {
System.out.println(resourceToString("git.properties"));
}
public static String resourceToString(String path) {
if (path == null) {
return null;
}
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
if (in == null) {
return null;
}
StringBuilder sb = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
String line;
while ((line = reader.readLine()) != null) {
sb.append(line).append(System.lineSeparator());
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(sb.toString());
return sb.toString();
}
}
Заключение
Довольно просто вычитать контент ресурсного файла с помощью метода getResourceAsStream и последующей вычиткой контента из полученного InputStream.
Как прочитать файл ресурсов из war приложения
Комментарии 0