Получение основной ошибки, когда File.listFiles возвращает ноль - PullRequest
15 голосов
/ 12 июля 2010

Согласно File.listFiles javadoc метод

Возвращает ноль, если это абстрактное имя пути не обозначает каталог или если произошла ошибка ввода-вывода.

Я знаю, что использую каталог, но получил результат null, поэтому должна появиться ошибка ввода-вывода. Мне очень интересно, в чем была ошибка.

Как я могу получить сообщение об ошибке / код, когда возвращается такой null результат?

Ответы [ 4 ]

12 голосов
/ 12 июля 2010

Вы не можете. К сожалению, API не предоставляет вам способа узнать об основной ошибке ввода-вывода.

Смотри также

  • Ошибка 4505804: File.listFiles() требует null проверка возвращаемого значения - должна иметь лучшую обработку ошибок

    Различные listFiles методы File имеют следующую раздражающую особенность: они могут возвращать null в случае ошибки ввода / вывода.

    Это поведение очень неудобно, потому что это означает, что не только я должен иметь код, который обрабатывает IOException с (что хорошо), но я также должен сделайте дополнительные null проверки результата.

    Лучше было бы, если бы произошла ошибка ввода-вывода, то IOException всегда брошен. Вы не должны использовать выдающееся возвращаемое значение, чтобы иногда указать ошибки, а затем и другие времена throw Exception s!

    Оценка : Мы планируем решить эту давнюю проблему в предстоящем API новой файловой системы.

7 голосов
/ 03 января 2013

Используйте java.nio.file.DirectoryStream (в Java 7+), и вы получите правильные исключения.

3 голосов
/ 12 июля 2010

Из того, что я вижу из реализации файла , он вернет null, если

  • файл не является каталогом или
  • файл не существует или
  • каталог защищен от чтения.

Нет свидетельств «скрытого» исключения IOException, хотя в исходном коде может возникнуть ошибка ввода-вывода.

0 голосов
/ 15 октября 2014

установите perm в папку 311 (или что-то без чтения), и listFiles () вернет null

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...