我想从文件夹ressources/images/
中检索文件,因此我在Main.java
中执行此操作:
URL url = getClass().getClassLoader().getResource("../ressources/images/");
File folder = new File(url.getFile());
File[] listOfFiles = folder.listFiles();
这是整个项目层次结构
myGame
- ressources
-- images
--- image1.jpg
--- image2.jpg
--- image3.jpg
- src
-- dvt
--- Main.java
但是我在第二行遇到了这个错误:
线程“JavaFX应用程序线程”中的异常 显示java.lang.NullPointerException
所以我认为它找不到目录。
使用绝对路径可以正常工作,但不能使用相对路径:
File folder = new File("D:\\courses\\UE4\\projet2\\ressources\\images\\");
答案 0 :(得分:1)
“ressources”只是你帖子上的拼写错误,或文件夹的实际名称?
此外,正式结构通常是
myGame
- src
-- main
--- java
---- Main.java
-- resources
--- images
---- image1.jpg
---- image2.jpg
---- image3.jpg
你得到的NPE是因为第2行的url为空。
这对我来说没问题:
URL url = getClass().getClassLoader().getResource("images");
File folder = new File(url.getFile());
File[] listOfFiles = folder.listFiles();
答案 1 :(得分:0)
File folder = new File("ressources/images");
File[] listOfFiles = folder.listFiles();
文件夹“ressources”与应用程序位于同一级别,因此这应该有效。但是您正在使用java maven约定将源放置在src / main / java和资源放在src / main / resources但是使用不同的名称而没有构建工具我猜。这很奇怪。
答案 2 :(得分:0)
File folder = new File(System.getProperty("user.dir")+"/ressources/images");
File[] listOfFiles = folder.listFiles();
System.getProperty(“ user.dir”)是项目文件夹,在您的情况下为myGame 只需追加补发路径,它将起作用