Мне нужно вернуть или распечатать дерево файлов / каталогов, используя структуру данных стека.Например:
Folder1
Folder1.1
File1.1.1
Folder1.2
Folder2
File2.1
File2.2
...
Мой код на данный момент:
public static void filetree(File mainfolder, int indent){
Stack<String> filesanddirectories = new Stack<>();
for (File file : mainfolder.listFiles()){
if (file.isDirectory()){
filesanddirectories.push(file.getName());
filetree(file, 0);
}
else if (file.isFile()){
filesanddirectories.push(file.getName());
}
}
for (int i = 0; i < filesanddirectories.size(); i++){
System.out.println(filesanddirectories.pop());
}
}
Этот код печатает папки и файлы, но без отступов, в обратном направлении и не совсем в правильном порядке.
Может ли кто-нибудь объяснить логику того, как это должно работать?
РЕДАКТИРОВАТЬ: нашел решение с использованием рекурсии и стека (хотя стек кажется ненужным)