2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Javaでクラスパス上のファイルをPathとして取得する

Posted at

環境

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() するなどの対策が必要です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?