在Java main方法中获取资源

Mik*_*koP 3 java resources filenotfoundexception

我正在尝试通过调用MainClass.class.getResource("/Resources/file.extension")并将其传递给File的构造函数来在我的Java应用程序中打开资源getPath().接下来,当我初始化一个新FileInputStream的时File,我得到一个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)
Run Code Online (Sandbox Code Playgroud)

这是我的代码.

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

...

InputStream in = new FileInputStream(file);
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 5

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

InputStream in = MainClass.class.getResourceAsStream("/Resources/file.extension");
Run Code Online (Sandbox Code Playgroud)

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