gpt4 book ai didi

java - Java非递归获取目录及其子目录下所有文件的方法

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:55 25 4
gpt4 key购买 nike

我正在尝试获取目录及其子目录中所有文件的列表。我目前的递归方法如下:

private void printFiles(File dir) {
for (File child : dir.listFiles()) {
if (child.isDirectory()) {
printFiles(child);
} else if (child.isFile()) {
System.out.println(child.getPath());
}
}
}

printFiles(new File("somedir/somedir2"));

但是,我希望有一种非递归方式(可能是现有的 API 调用)来执行此操作。如果不是,这是最干净的方法吗?

最佳答案

您始终可以通过使用堆栈(对于 DFS)或队列(对于 BFS)将递归解决方案替换为迭代解决方案:

private void printFiles(File dir) {
Stack<File> stack = new Stack<File>();
stack.push(dir);
while(!stack.isEmpty()) {
File child = stack.pop();
if (child.isDirectory()) {
for(File f : child.listFiles()) stack.push(f);
} else if (child.isFile()) {
System.out.println(child.getPath());
}
}
}

printFiles(new File("abc/def.ghi"));

关于java - Java非递归获取目录及其子目录下所有文件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6776252/

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