Java NullPointer在目录上调用listFiles()时的异常
2022-09-03 00:14:27
						我在服务器上有一系列包含书籍的文件夹,我用这段代码访问这些文件夹。我想使每个文件夹都成为一个对象,以便以后可以对其中的文件进行一些处理。我正在尝试使用此方法将文件夹列表作为Book对象返回。
public List<Book> getBooks(File folder){
    List<Book> books = new ArrayList<Book>();
    for (File f : folder.listFiles()){
        if (f.isDirectory()){
            System.out.println(f.getAbsolutePath() + "" + f.listFiles());
            books.add(new Book(f));
        }
    }
    return books;
}
此块中的 println 语句正在打印文件夹的直接路径,然后是内存地址以及其他一些信息。但是,在文件夹的某个位置,当调用 listFiles() 时,它会打印出 null。它正在其上执行此操作的文件夹不为空。然后,这个假定的空文件夹被传递给我的类 init 方法。
public Book(File bookFolder) {
    this.bookFolder = bookFolder;
    this.bookPath = bookFolder.getAbsolutePath();
    System.out.println(bookFolder + " " + bookFolder.listFiles());
    for (File f : bookFolder.listFiles()) {
        ...
    }
}
此块中的 println 语句输出出与文件夹完全相同的路径,然后是不同的内存地址,这也是预期的。当它命中“空”文件夹时,它会再次打印内存地址的null。
现在,对于真正的问题,带有for循环的行是程序崩溃并引发NullPointerException的地方,这在listFiles方法的文档中甚至没有描述。
为什么会发生这种情况?另外,为什么我的非空文件夹返回 null?
 
					 
				 
				    		 
				    		 
				    		 
				    		