Java:访问src外的项目目录

时间:2017-05-29 15:08:27

标签: java url nullpointerexception resources directory

我想从文件夹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\\");

3 个答案:

答案 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 只需追加补发路径,它将起作用