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 приложения