在本例中,您将学习如何使用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语句。