27

からオブジェクトを作成しFileInputStream、ファイルの相対値をそのコンストラクターに渡そうとしましたが、正しく機能せず、FileNotFoundException

try {
   InputStream is = new FileInputStream("/files/somefile.txt");
} catch (FileNotFoundException ex) {
   System.out.println("File not found !");
}
4

3 に答える 3

58

最初の/は、パスを相対パスではなく絶対パスにします。

先頭の を削除してみてください。次の/ように置き換えてください。

InputStream is = new FileInputStream("/files/somefile.txt");

と:

InputStream is = new FileInputStream("files/somefile.txt");

それでも問題が解決しない場合は、現在のディレクトリを確認して、考えている場所からプログラムが実行されていることを確認してください。

System.out.println(System.getProperty("user.dir"));
于 2013-01-27T23:01:52.450 に答える
7

他のポスターは、あなたが与えているパスは相対パスではありません。のようなことができる可能性があります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)

于 2013-01-27T23:03:47.953 に答える
4
  1. これは相対パスではなく、絶対パスです。
  2. Windowsを使用している場合は、パスの前にドライブ文字を追加する必要があります。

InputStream is = new FileInputStream("C:/files/somefile.txt");

/Windowsは「ルート」としてのシンボルをサポートしていません

JARに入れるファイルをロードする場合は、次を使用する必要があります。

getClass().getResource("path to your file");

また

getClass().getResourceAsStream("path to your file");
于 2013-01-27T22:57:55.743 に答える