環境
JDK 17を使っています。たぶん、多少バージョンが違っていても同じように動くと思います。
今回のフォルダ構造
今回はsrc/main/resources配下のファイルを取得したいとします。
$ tree .
.
└── src
└── main
├── java
│ └── foo
│ └── Main.java
└── resources
├── sample1.txt
└── bar
└── baz
└── sample2.txt
コード
Main.java
package foo;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) {
Path path1 = Path.of(Main.class.getClassLoader().getResource("sample1.txt").toURI());
Path path2 = Path.of(Main.class.getClassLoader().getResource("bar/baz/sample2.txt").toURI());
}
}
指定したファイルが存在しなかった場合は getResource()
が null
を返すので、NullPointerExceptionが発生します。
それを防ぎたい場合は、 getResource()
の戻り値をいったん変数に代入して、if文で null
チェックしてから toURI()
するなどの対策が必要です。