使用Java以非递归方式获取目录及其子目录中的所有文件

梅塔(K Mehta):

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

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调用)来实现。如果不是,这是最干净的方法吗?

瑞安·格罗斯(Ryan Gross):

您始终可以使用堆栈(对于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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查找目录及其子目录中的所有文件

使用Unix遍历目录及其子目录中的所有文件

Java:如何递归获取所有子目录?

如何递归列出目录及其子目录中所有文件的Md5sum?

在RPM%files部分中,可以递归指定目录及其所有文件和子目录吗?

在目录及其所有子目录中搜索文件名而不识别子目录中的文件

获取目录及其子目录中的文件数

在目录和所有子目录中获取Java文件

列出目录及其所有子目录中具有100行以上的文件

如何在hadoop hdfs中列出目录及其子目录中的所有文件

如何将目录(及其子目录)中的所有pdf文件递归地复制到单个输出目录中?

列出目录及其子目录中的所有.csv文件uisng PHP

列出子目录及其父目录中的所有c文件

在目录及其子目录中查找所有动画gif文件

Git在目录及其子目录中的所有跟踪文件上跳过工作树

Python计算目录及其所有子目录中的文件

递归计算目录中的所有文件(包括子目录中的文件)

如何使用Java的目录流仅在目录中而不是其他子目录中获取文件/子目录

将目录中的所有子目录和文件递归添加到数组中

使用单个ImageMagick命令更改目录及其子目录中的所有图像?

Mac:如何递归地在子目录中查找最大的文件(忽略所有目录)

如何将子目录中的所有文件递归移动到单个目录?

Bash - 递归查找目录及其子目录中所有文件类型的好方法是什么?

复制所有子目录的递归文件

PHP:使用 scandir 从多个子目录中获取所有 zip 文件

尝试使用Bat文件获取目录和子目录中所有文件的行数

如何使用vim打开当前目录和所有子目录中的所有文件?

在所有子目录中递归运行命令

使用pathlib递归遍历所有子目录