import java.io.IOException; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; public class FileVisitorTest { public static void main(String[] args) throws Exception { // 遍历g:publishcodes15目录下的所有文件和子目录 Files.walkFileTree(Paths.get("e:", "我的光盘", "codes", "15"), new SimpleFileVisitor<Path>() { // 访问文件时候触发该方法 @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { System.out.println("正在访问" + file + "文件"); // 找到了FileInputStreamTest.java文件 if (file.endsWith("FileInputStreamTest.java")) { System.out.println("--已经找到目标文件--"); return FileVisitResult.TERMINATE; } return FileVisitResult.CONTINUE; } // 开始访问目录时触发该方法 @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { System.out.println("正在访问:" + dir + " 路径"); return FileVisitResult.CONTINUE; } }); } }
output:
正在访问:e:我的光盘codes15 路径 正在访问:e:我的光盘codes1515.1 路径 正在访问e:我的光盘codes1515.11546017388045文件 正在访问e:我的光盘codes1515.1FilenameFilterTest.class文件 正在访问e:我的光盘codes1515.1FilenameFilterTest.java文件 正在访问e:我的光盘codes1515.1FileTest.class文件 正在访问e:我的光盘codes1515.1FileTest.java文件 正在访问:e:我的光盘codes1515.10 路径 正在访问e:我的光盘codes1515.10a.txt文件 正在访问e:我的光盘codes1515.10AttributeViewTest.class文件 正在访问e:我的光盘codes1515.10AttributeViewTest.java文件 正在访问e:我的光盘codes1515.10FilesTest.class文件 正在访问e:我的光盘codes1515.10FilesTest.java文件 正在访问e:我的光盘codes1515.10FileVisitorTest$1.class文件 正在访问e:我的光盘codes1515.10FileVisitorTest.class文件 正在访问e:我的光盘codes1515.10FileVisitorTest.java文件 正在访问e:我的光盘codes1515.10PathTest.class文件 正在访问e:我的光盘codes1515.10PathTest.java文件 正在访问e:我的光盘codes1515.10pome.txt文件 正在访问e:我的光盘codes1515.10WatchServiceTest.class文件 正在访问e:我的光盘codes1515.10WatchServiceTest.java文件 正在访问:e:我的光盘codes1515.3 路径 正在访问e:我的光盘codes1515.3FileInputStreamTest.class文件 正在访问e:我的光盘codes1515.3FileInputStreamTest.java文件 --已经找到目标文件--