これを行う最善の方法は、それをクラスパスに入れてからgetResource()にすることです
package com.sandbox;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
public class Sandbox {
public static void main(String[] args) throws URISyntaxException, IOException {
new Sandbox().run();
}
private void run() throws URISyntaxException, IOException {
URL resource = Sandbox.class.getResource("/my.txt");
File file = new File(resource.toURI());
String s = FileUtils.readFileToString(file);
System.out.println(s);
}
}
が必要だと想定しているため、これを行っていますFile
。ただし、代わりに を使用する API がある場合は、InputStream
代わりに使用することをお勧めしますgetResourceAsStream
。
パスに注意してください/my.txt
。つまり、「クラスパスのルート ディレクトリにある my.txt という名前のファイルを取得する」ということです。getResource
これを行う方法についてもっと読んで、もっとgetResourceAsStream
学ぶことができると確信しています。ただし、ここで重要なことは、ファイルのクラスパスは、実行可能ファイルを提供するどのコンピューターでも同じになるということです(クラスパス内でファイルを移動しない限り)。
ところで、次の行で null ポインタ例外が発生したnew File
場合は、ファイルの正しいクラスパスを指定していないことを意味します。