从另一个包访问文件

时间:2012-11-14 14:52:54

标签: java package inputstreamreader

我的情况如下:我有packA个包classA,我file.txt packB.resources。在classA我正在使用它来访问file.txt

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

但不幸的是,它显示了一个例外:

  

java.io.FileNotFoundException:\ packB \ resources \ file.txt(The   找不到指定的路径)

4 个答案:

答案 0 :(得分:2)

FileInputStream类根据文件系统路径在文件系统中打开文件。

但您显然要做的是打开通过类路径定位的资源。您应该使用Class.getResourceAsStream(String)

答案 1 :(得分:2)

如果您的file.txt与应用程序打包在一起,则根本不应使用文件系统进行访问。应用程序可能打包到jar中,因此该文件不在文件系统中。您应该将其作为资源访问:

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

答案 2 :(得分:1)

使用以下内容。注意,/用作包名之前的前缀。假设YourClass在packA中。

InputStream stream = YourClass.class.getResourceAsStream("/packB/resources/file.txt");

答案 3 :(得分:0)

您应该从文件路径中删除尾随/并使用classA.class.getClassLoader().getResourceAsStream("packB/resources/file.txt")