1

我的情况如下:我有包,packAclassAfile.txtpackB.resourcesclassA我使用它来访问file.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 回答