无法使用.getResource()。getPath()打开文件

时间:2013-01-12 15:32:26

标签: java javafx-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());
}

我在线上获取了java.lang.NullPointerException(for file file:files){“

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

返回 文件:/ d:/JavafxApp1/JavafxApp/dist/run2054723721/JavafxApp.jar / javafxapp /媒体/图像/背景/

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

getClass().getResource()

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