mavenプロジェクトのリソース配置とJavaのリソース読み込み

marvenプロジェクトのリソース配置

marvenプロジェクトはリソースを src/main/resources 配下に格納する

src -+- main/ -+- java/Sample/App.java
               |
               +- resources/test.txt

上記において mvn compile すると、 target ディレクトリ配下に以下のように配置される

ビルド後のリソース配置

target -+- classes -+- Sample -+- App.class
                    |
                    +- test.txt

Java のリソース読み込み

Javaのリソース読み込みシステムは Class.getResource(ファイル名) もしくは Class.getResourceAsStream(ファイル名) メソッドで行う

package Sample;

import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.io.BufferedReader;
import java.util.stream.Collectors;
import java.io.InputStream;
import java.io.InputStreamReader;


public class App 
{
    public static void main( String[] args ) throws Exception
    {
        System.out.println( "Hello World!" );
        // 1. URLとして取得する方法
        URL url = App.class.getResource("/test.txt");
        System.out.println(Files.readString(Path.of(url.toURI())));

        // 2. 直接バイトストリームとして読み込む方法
        InputStream is = App.class.getResourceAsStream("/test.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        System.out.println(br.lines().collect(Collectors.joining()));
    }

}