如何使用 Java 迭代目录和子目录中的文件
为了获取完整的文件列表,包括子目录中的文件,Java 提供了一个简单的解决方案。通过利用递归,可以有效地导航文件系统。
递归方法
利用 File#isDirectory() 来确定文件是否代表目录。如果为 true,则使用 File#listFiles() 的结果重复该过程。这称为递归。
这是一个示例实现:
public static void showFiles(File[] files) { for (File file : files) { if (file.isDirectory()) { System.out.println("Directory: " + file.getAbsolutePath()); showFiles(file.listFiles()); // Recursive call } else { System.out.println("File: " + file.getAbsolutePath()); } } }
Java 8 的 Files#walk
对于 Java 8 及更高版本,Files #walk() 提供了一种使用 tail 的便捷替代方案递归:
Files.walk(dir).forEach(path -> showFile(path.toFile()));
这可以安全地处理深层层次结构,避免由于过度递归而导致潜在的 StackOverflowError。
以上是如何在Java中递归遍历文件和子目录?的详细内容。更多信息请关注PHP中文网其他相关文章!