在本例中,您将学习如何使用Files.walkFileTree()来遍历文件树。这个方法需要两个参数。第一个参数是启动文件,在本例中,我们将从驱动器D:开始。第二个参数是为每个文件调用的文件访问器。这里,我们将创建一个名为FindTextFilesVisitor的文件访问器,它扩展了java.nio.file.SimpleFileVisitor。
要获取所有文本文件(文件以。Txt)我们覆盖了由 SimpleFileVisitor 定义的 visitFile ()。在这个方法中,我们检查文件是否以。Txt 扩展名,并在扩展名匹配时打印文件名。我们继续通过返回 FileVisitResult.CONTINUE 来遍历文件树。
package org.nhooo.example.io; import java.io.IOException; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; public class WalkFileTree { public static void main(String[] args) { try { Path startDir = Paths.get("D:/"); Files.walkFileTree(startDir, new FindTextFilesVisitor()); } catch (IOException e) { e.printStackTrace(); } } /** * FindTextFilesVisitor. */ static class FindTextFilesVisitor extends SimpleFileVisitor<Path> { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { if (file.toString().endsWith(".txt")) { System.out.println(file.getFileName()); } return FileVisitResult.CONTINUE; } } }
如不需要列出文件,您可以修改上面的代码段,例如使用它删除以.bak结尾的所有文件。只需更改扩展名,并在visitFile()方法中用file delete语句替换print out语句。