FileInputStream
からオブジェクトを作成し、ファイルの相対値をコンストラクターに渡そうとしましたが、正しく動作せず、FileNotFoundException
をスローしました
try {
InputStream is = new FileInputStream("/files/somefile.txt");
} catch (FileNotFoundException ex) {
System.out.println("File not found !");
}
最初の/
は、パスを相対ではなく絶対にします。
先頭の/
を削除してみてください:
InputStream is = new FileInputStream("/files/somefile.txt");
で:
InputStream is = new FileInputStream("files/somefile.txt");
それでも問題が解決しない場合は、 現在のディレクトリを確認する で、考えている場所からプログラムが実行されていることを確認してください。
System.out.println(System.getProperty("user.dir"));
他のポスターは正しいです。あなたが与えている道は相対的な道ではありません。潜在的にthis.getClass().getResourceAsStream("Path relative to the current class")
のようなことができます。これにより、呼び出し元のクラスに相対的なパスに基づいて、ファイルをストリームとしてロードできます。
詳細については、Java APIを参照してください。 http://docs.Oracle.com/javase/7/docs/api/Java/lang/Class.html#getResourceAsStream(Java .lang.String)
InputStream is = new FileInputStream("C:/files/somefile.txt");
windowsは/
シンボルを「ルート」としてサポートしていません
JARに入れるファイルをロードする場合は、使用する必要があります
getClass().getResource("path to your file");
または
getClass().getResourceAsStream("path to your file");