4

私は次のようなファイルを読み込もうとしています:

FileInputStream fileInputStream = new FileInputStream("/com/test/Test.xml");

ファイルが見つからないという例外が常に発生します。どうすればそれを機能させることができますか?inputstreamは相対パスを使用しますか?

4

4 に答える 4

7

はい、これは相対的なパスを取ることができます。

なぜあなたの表現はうまくいかないのですか?非常に単純です。パス/com/test/Test.xmlは。で始まるため絶対パスであるため、実際にはルートから始まるディレクトリ/にあるファイルを探しています。/com/test/

問題を解決する方法は?

プロジェクトの下にあるファイルを見つけようとしていると思います。./com/test/Test.xmlしたがって、またはのような相対パスを使用できますcom/test/Test.xml。これはおそらく役立つでしょう。おそらく、現在の作業ディレクトリとファイル構造がわからないためです。現在のディレクトリは、実行時に配置されている場所ですjava。IDEから実行している場合、通常、作業ディレクトリはプロジェクトディレクトリです。

この場合、ファイルはプロジェクトルートの直下ではなく、その下のどこかにある./com/test/Test.xmlため、パスは無効であると思います。Test.xml./src/resources/com/test

この場合、おそらくファイルをファイルとしてではなく、リソース(クラスパスにある)として読み取りたいと思うでしょう。この場合、

getClass().getResourceAsStream("/com/test/Test.xml")

于 2012-05-22T07:11:00.783 に答える
4

使ってみてください

class.getResourceAsStream(path)。その場合、パスは、このステートメントを呼び出すクラスを含むフォルダーからの相対パスである必要があります。

InputStream in = getClass().getResourceAsStream("/com/test/Test.xml");
于 2012-05-22T07:04:17.290 に答える
0

これを試して、

String str = "Test.xml";
  File file = new File(str);
  String absolutePathOfFirstFile = file.getAbsolutePath();
  FileInputStream fileInputStream = new FileInputStream(absolutePathOfFirstFile);
于 2012-05-22T07:08:01.700 に答える
0

パスが正しくない必要があります。System.getProperty("user.dir");のパスを使用または印刷することにより、現在のディレクトリを確認できます。new File(".")

于 2012-05-22T07:09:12.203 に答える