1

私の状況は次のpackAとおりです。これを使用してアクセスしています:classAfile.txtpackB.resourcesclassAfile.txt

InputStreamReader in = new InputStreamReader(new FileInputStream("/packB/resources/file.txt"), "UTF-8");

しかし残念ながら、それは私に例外を示しています:

java.io.FileNotFoundException : \packB\resources\file.txt (指定されたパスが見つかりませんでした)

4

4 に答える 4

2

FileInputStream クラスは、ファイル システム パスに基づいてファイル システム内のファイルを開きます。

しかし、明らかにしようとしているのは、クラスパス経由で配置されたリソースを開くことです。を使用する必要がありますClass.getResourceAsStream(String)

于 2012-11-14T15:01:07.507 に答える
2

アプリケーションにパッケージ化されている場合file.txtは、ファイル システムを使用してアクセスしないでください。アプリケーションは jar にパッケージ化されている可能性があるため、ファイルはファイル システムに配置されません。代わりにリソースとしてアクセスする必要があります。

InputStreamReader in = new InputStreamReader(getClass().getResourceAsStream("/packB/resources/file.txt"), "UTF-8"));
于 2012-11-14T15:01:51.687 に答える
1

次のようなものを使用します。/ がパッケージ名の前のプレフィックスとして使用されていることに注意してください。YourClass は packA にあると想定されます。

InputStream stream = YourClass.class.getResourceAsStream("/packB/resources/file.txt");
于 2012-11-14T15:00:58.470 に答える
0

/ファイル パスから末尾を削除して、classA.class.getClassLoader().getResourceAsStream("packB/resources/file.txt").

于 2012-11-14T15:08:40.573 に答える