Java 从另一个包访问文件
我的情况如下:我有一个packaclassa包,在packB.resources中有一个file.txt文件。在classA中,我使用此文件访问file.txt: 但不幸的是,它向我展示了一个例外: java.io.FileNotFoundException:\packB\resources\file.txt 找不到指定的路径Java 从另一个包访问文件,java,package,inputstreamreader,Java,Package,Inputstreamreader,我的情况如下:我有一个packaclassa包,在packB.resources中有一个file.txt文件。在classA中,我使用此文件访问file.txt: 但不幸的是,它向我展示了一个例外: java.io.FileNotFoundException:\packB\resources\file.txt 找不到指定的路径 使用类似下面的方法。注意,/用作包名称之前的前缀。假设您的类在packA中 InputStream stream = YourClass.class.getResourc
使用类似下面的方法。注意,/用作包名称之前的前缀。假设您的类在packA中
InputStream stream = YourClass.class.getResourceAsStream("/packB/resources/file.txt");
使用类似下面的方法。注意,/用作包名称之前的前缀。假设您的类在packA中
InputStream stream = YourClass.class.getResourceAsStream("/packB/resources/file.txt");
FileInputStream类根据文件系统路径打开文件系统中的文件
但是您显然是想打开一个通过类路径定位的资源。您应该使用Class.getResourceAsStreamString。FileInputStream类根据文件系统路径在文件系统中打开文件 但是您显然是想打开一个通过类路径定位的资源。您应该使用Class.getResourceAsStreamString。如果您的file.txt与应用程序打包在一起,则根本不应该使用文件系统访问。应用程序可能打包到jar中,因此文件不在文件系统中。您应该将其作为资源访问:
InputStreamReader in = new InputStreamReader(getClass().getResourceAsStream("/packB/resources/file.txt"), "UTF-8"));
如果您的file.txt与应用程序打包在一起,则根本不应使用文件系统进行访问。应用程序可能打包到jar中,因此文件不在文件系统中。您应该将其作为资源访问:
InputStreamReader in = new InputStreamReader(getClass().getResourceAsStream("/packB/resources/file.txt"), "UTF-8"));
您应该从文件路径中删除尾随/并使用classA.class.getClassLoader.getResourceAsStreampackB/resources/file.txt。您应该从文件路径中删除尾随/并使用classA.class.getClassLoader.getResourceAsStreampackB/resources/file.txt。代码和错误消息不匹配。代码使用了资源,但错误消息称为resources。@hmjd:post-updated,谢谢。代码和错误消息不匹配。代码使用了资源,但错误消息显示为resources。@hmjd:post-updated,谢谢。