我的情况如下:我有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 找不到指定的路径)
答案 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")
。