В какой последовательности работает Java FileVisitor
Ответ на этот вопрос - B и C. Я понимаю, почему B - один из ответов, но я не могу понять, почему C также является правильным.
Может кто-нибудь объяснить, почему C-правильный?
1 ответ
Записи в каталоге не просматриваются ни в каком конкретном порядке.
B - это обход, который посещает х / у до х / а
C это обход, который посещает х / а до х / у
Оба варианта возможны, поскольку соответствующие javadoc не накладывают ограничений на порядок, в котором посещаются записи каталога. (Проблема не упоминается.)
И учебник Java говорит:
"Сначала проверяется дерево файлов, но вы не можете делать никаких предположений о порядке итерации посещаемых подкаталогов".
Акцент добавлен.
На практике порядок обхода будет детерминированным при условии, что родительский каталог (x) не обновляется. Обычно это зависит от того, в каком порядке записи каталога хранятся на диске.
Также обратите внимание, что вы обычно не замечаете этого, потому что утилиты командной строки (например, ls
и сама оболочка) обычно сортирует имена записей каталога, прежде чем показывать их вам.