• 2019年5月7日火曜日
アリスト戦記
アリスト戦記 https://blog.aristo-solutions.net/2019/05/java.html

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

普通、Javaでファイルを取得する場合は絶対パスで取得するものなんだけど、偶にクラスパス上のファイルを取得したい時がある。

例えば、JUnitの為にテスト用ファイルを流し込みたい時、チェックアウトしてすぐ動かす為にはクラスパス上にファイルを置いておくのが便利だ。

必要になる時に備えてソースを残しておこう

クラスパス上のファイルを取得する方法
ソース

/**
* クラスパス上のファイルを取得する。
*
* 渡すパスの書き方は、 例えばresourcesファイルの直下の場合は「"/messageResource.properties"」などとなる。
*
* @param clazzFilePath クラスパス相対ファイルパス
* @return ファイル
*/
public File getClassPathFile(String clazzFilePath) {

  File file = new File(this.getClass().getResource(clazzFilePath).getPath());

  return file;

}

解説

clazzFilePathには「/messageResource.properties」というように渡す。
つまり、クラスパス直下が「/」で、そこからの相対パスを指定すれば良いということだ。

「this.getClass().getResource(clazzFilePath).getPath()」とすることで、相対パスで取得したクラスパスの絶対パスが取れるから、後は普通に処理すればOK。

0 件のコメント:

コメントを投稿