@hermina.hauck
В Java можно обойти все директории на диске без рекурсии, используя стек для хранения директорий, которые еще не были обработаны. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import java.io.File; import java.util.Stack; public class DirectoryTraversal { public static void main(String[] args) { File root = new File("/path/to/root/directory"); Stack<File> stack = new Stack<>(); stack.push(root); while (!stack.empty()) { File directory = stack.pop(); File[] files = directory.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { stack.push(file); } // Делайте что-то с файлом, например, выводите его имя System.out.println(file.getName()); } } } } } |
В этом примере мы начинаем с корневой директории и добавляем ее в стек. Затем мы начинаем обходить стек, извлекая из него директории по очереди. Для каждой директории мы получаем список файлов, и если файл является директорией, мы добавляем его в стек. В противном случае мы выполняем какие-то действия с файлом, например, выводим его имя на экран.
Этот код обойдет все директории в дереве файловой системы, начиная с корневой директории, без использования рекурсии.