3

我试图通过调用MainClass.class.getResource("/Resources/file.extension")并将其传递给 File 的构造函数来打开我的 Java 应用程序中的资源getPath()。接下来,当我用 初始化一个 newFileInputStreamFile,我得到一个FileNotFoundException. 完整的堆栈跟踪如下所示。

java.io.FileNotFoundException: E:\user\Documents\NetBeansProjects\Project name\build\classes\Resources\file.csv (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at my.secret.project.MainClass.main(MainClass.java:27)

这是我的代码。

File file = new File(MainClass.class.getResource("/Resources/file.extension").getPath());

...

InputStream in = new FileInputStream(file);
4

1 回答 1

5

您的整个代码可以替换为简单的:

InputStream in = MainClass.class.getResourceAsStream("/Resources/file.extension");

无需使用File. 事实上,您的 CLASSPATH 上的文件可能指向 JAR/WAR 中的某个位置,这肯定是行不通的。有一个战利品Class.getResourceAsStream()的细节。

于 2012-10-04T17:13:31.373 回答