Java NullPointerException при вызове listFiles () в каталоге

У меня есть ряд папок, содержащих книги, на сервере, к которому я обращаюсь с помощью этого фрагмента кода. Я хочу сделать каждую из этих папок объектом, чтобы потом можно было поработать с файлами внутри них. Я пытаюсь использовать этот метод для возврата списка папок в виде объектов книги.

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. Папка, в которой он это делает, не пуста. Эта предположительно пустая папка затем передается моему методу инициализации класса.

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.

Почему это могло происходить? Кроме того, почему мои непустые папки возвращают ноль?

13
задан Mat 25 May 2011 в 05:31
поделиться