Итерация по файловой системе Java

1

У меня есть вопрос относительно итерации через дерево файловой системы. С учетом очереди и узла, на котором вы начинаете, как бы вы могли его перебирать? Я получаю это изначально, вы должны ставить в очередь узел, с которого вы начинаете, но я смущен тем, как реализовать методы hasNext() и next(). Вот два метода, которые я должен реализовать, я не хочу, чтобы кто-нибудь дал мне код, и если вы это сделаете, я просто буду использовать его в качестве рекомендаций, а не для копирования из-за плагиата. Кроме того, рекурсия не является вариантом, потому что использование этого будет обходной путь по глубине, а не желаемый обход ширины файловой системы

public boolean hasNext()
public File next()
Теги:
filesystems
queue

1 ответ

0
Лучший ответ

Используйте реализацию Queue. Допустим, вы начинаете с головы узла. Сначала положите голову в очередь. Итерации над всеми детьми головы и поставить их в очередь. После того, как все дети сделаны, удалите голову, чтобы получить следующий узел из очереди. Теперь этот новый узел станет головным узлом. Найдите его и поставьте в очередь и так далее... Очередь объявлений следует за FIFO (First in First out), с которой вы сможете реализовать BFS (Breath first Search).

и итерации по всем детям в голове, должен ли я использовать метод listFiles() или isDirectory()?

Отвечая на ваш комментарий. скажем, у вас есть начальный путь P1 - голова. Сначала проверьте, является ли это каталогом с использованием метода isDirectory(). Если ваш обход закончился. Если это listFiles() в этом каталоге. перебирать файлы, которые listFiles() возвращает, обрабатывать и добавлять в очередь, только если isDirectory() возвращается для него. Затем вытащите файл из очереди и продолжите обработку.

  • 0
    и для перебора всех дочерних элементов в голове, я должен был бы использовать метод listFiles () или isDirectory (). Я знаю, что должен использовать эти методы, но не знаю, когда использовать какие
  • 0
    @dzagnyr обновил ответ, включив в него ваш комментарий.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню