gpt4 book ai didi

java - 使用堆栈在 Java 中制作文件/目录树

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:39:45 24 4
gpt4 key购买 nike

我需要使用堆栈数据结构返回或打印文件/目录树。例如:

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());
}
}

此代码打印文件夹和文件,但没有缩进、向后且顺序不完全正确。

谁能解释一下它应该如何工作的逻辑?

编辑:找到了一个使用递归和堆栈的解决方案(尽管堆栈似乎是不必要的)

最佳答案

我使用 indenttemp 变量在递归遍历文件目录时保持缩进。然后在 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;
}
}
}

关于java - 使用堆栈在 Java 中制作文件/目录树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52833530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com