![](/img/trans.png)
[英]How to automatically manage a file system directory tree using Java/Spring?
[英]Using stack to make file/directory tree in Java
我需要使用堆棧數據結構返回或打印文件/目錄樹。 例如:
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());
}
}
此代碼打印文件夾和文件,但沒有縮進,向后且順序不正確。
有人可以解釋它應該如何工作的邏輯嗎?
編輯:找到了使用遞歸和堆棧的解決方案(盡管堆棧似乎是不必要的)
在通過文件目錄遞歸遍歷時,我使用了indent
和temp
變量來保持縮進。 然后在for
循環的開始處打印縮進。
public static void filetree(File mainfolder, int indent) {
int temp;
for (File file : mainfolder.listFiles()) {
for(int i = 0; i<indent; i++) {
System.out.print(" ");
}
temp = indent;
if (file.isDirectory()) {
indent++;
System.out.println(file.getName());
filetree(file, indent);
indent--;
} else if (file.isFile()) {
System.out.println(file.getName());
indent = temp;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.