当前位置: 首页 > 面试题库 >

如何遍历Java目录中的文件?

通啸
2023-03-14
问题内容

我需要获取目录中所有文件的列表,包括所有子目录中的文件。用Java完成目录迭代的标准方法是什么?


问题答案:

你可以File#isDirectory()用来测试给定的文件(路径)是否为目录。如果是true,则只需再次调用同一个方法及其File#listFiles()结果即可。这称为递归

这是一个基本的启动示例。

public static void main(String... args) {
    File[] files = new File("C:/").listFiles();
    showFiles(files);
}

public static void showFiles(File[] files) {
    for (File file : files) {
        if (file.isDirectory()) {
            System.out.println("Directory: " + file.getName());
            showFiles(file.listFiles()); // Calls same method again.
        } else {
            System.out.println("File: " + file.getName());
        }
    }
}

请注意,这StackOverflowError对树的深度超过JVM堆栈可以容纳的深度很敏感。你可能要使用迭代方法或尾递归,但这是另一个主题;)



 类似资料:
  • 问题内容: 我有一个目录日志文件。我想使用Python脚本处理此目录中的每个文件。 我该怎么做呢? 问题答案: 使用或,取决于您是否要递归执行。

  • 问题内容: 我想使用Java处理某个目录中的每个文件。 最简单(也是最常见)的方法是什么? 问题答案: 如果目录名称位于中,

  • 问题内容: 我需要遍历给定目录内的所有文件并对它们执行一些操作。 如何有效地做到这一点? 问题答案: 原始答案: 上面答案的Python 3.6版本,使用-假设你将目录路径作为str对象包含在名为的变量中: 或递归地使用:

  • 问题内容: 我在Linux上用bash编写脚本,需要遍历给定目录中的所有子目录名称。如何遍历这些目录(并跳过常规文件)? 例如: 给定目录是 它具有以下子目录: 我想检索A,B,C。 问题答案: 简短说明: 查找文件(很明显) 是当前目录,它位于is之后(恕我直言,它比直接包含在命令中更为灵活。如果要在此文件夹中执行更多操作,则只有一个位置可以更改,)。 并确保仅在当前目录中查找,并且不将自身包含

  • 我需要在网络驱动器上遍历一个目录,并在层次结构中创建子级到父级的映射。一个代表目录是6个Terrabytes,有90万个文件和900个文件夹。我只关心文件夹而不是文件。出于测试目的,我将没有文件的文件夹复制到另一个网络驱动器,并在复制的版本上运行代码。仅仅是在900个文件夹上迭代可能需要10秒。但是,迭代原始目录结构需要30分钟。我们似乎正在遍历所有90万个文件,尽管我们只是忽略它们。 有没有一种

  • X1.4.0新增 sp_scan_dir($pattern,$flags) 功能: 替代scan_dir的方法 参数: $pattern:检索模式 搜索模式 .txt,.doc; (同glog方法) $flags:返回模式 同glog方法 返回: 类型数组 使用方法: //扫描application目录 $files=sp_scan_dir('application/*');//返回applic