В какой последовательности работает Java FileVisitor

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

Может кто-нибудь объяснить, почему C-правильный?

1 ответ

Записи в каталоге не просматриваются ни в каком конкретном порядке.

  • B - это обход, который посещает х / у до х / а

  • C это обход, который посещает х / а до х / у

Оба варианта возможны, поскольку соответствующие javadoc не накладывают ограничений на порядок, в котором посещаются записи каталога. (Проблема не упоминается.)

И учебник Java говорит:

"Сначала проверяется дерево файлов, но вы не можете делать никаких предположений о порядке итерации посещаемых подкаталогов".

Акцент добавлен.


На практике порядок обхода будет детерминированным при условии, что родительский каталог (x) не обновляется. Обычно это зависит от того, в каком порядке записи каталога хранятся на диске.

Также обратите внимание, что вы обычно не замечаете этого, потому что утилиты командной строки (например, ls и сама оболочка) обычно сортирует имена записей каталога, прежде чем показывать их вам.

Другие вопросы по тегам