2

一年前,我为毕业工作编写了 JavaFX 2.0 应用程序。但是一年过去了,我遇到了以前有效的代码问题。

所以,在代码中我想获取文件夹并列出它的文件:

File dir = new File(getClass().getResource("media/images/backgrounds/").getPath()); 
File[] files = dir.listFiles();
for (File file : files) {
    list.add(file.toURI().toString());
}

我在 "for (File file : files) {" 线上得到 java.lang.NullPointerException

System.out.print(getClass().getResource("media/images/backgrounds/").getPath());

返回文件:/D:/JavafxApp1/JavafxApp/dist/run2054723721/JavafxApp.jar!/javafxapp/media/images/backgrounds/

我不想用另一种方法从 JAR 文件的流中读取文件。这种获取文件的方法一年前已经 100% 有效,但为什么现在不起作用?谢谢!

4

2 回答 2

2

它不起作用,因为您的文件夹在 jar 中。我想一年前他们不是。我认为对于目录位于 jar 之外的情况,您不需要单独的代码:

我发现这个例子展示了如何使用 getResourceAsStream 列出目录的文件。然后,反过来,您可以通过 getResourceAsStream 访问这些资源。你永远不会知道你是在罐子里面还是外面:-)

于 2013-01-12T15:48:53.347 回答
2

不要创建一个File它不能用于访问 jar 内的资源。

getClass().getResource()

已经返回您URL,因此请使用该 URL 或其他选项getResourceAsStream()

于 2013-01-12T16:50:53.633 回答