一年前,我为毕业工作编写了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%运行,但为什么它现在不起作用?谢谢!
答案 0 :(得分:2)
它不起作用,因为你的文件夹在一个罐子里。我想一年前他们不是。对于目录在jar之外的情况,我认为你不需要单独的代码:
我发现this example显示了如何使用getResourceAsStream列出目录文件。然后,您可以通过getResourceAsStream访问这些资源。你永远不会知道你是在罐子里面还是在罐子外面: - )
答案 1 :(得分:2)
不要创建File
它不能用于访问jar内的资源。
getClass().getResource()
已经返回URL
,因此请使用该网址或其他选项getResourceAsStream()