我正在尝试获取目录及其子目录中所有文件的列表。我当前的递归方法如下:
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"));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句