FileVisitorに定義した以下の4つのメソッド通りにディレクトリをwalk through
preVisitDirectory
visitFile
postVisitDirectory
visitFileFailed
public class Outer {
public static void main(String[] args) throws Exception{
Path p = Paths.get("c:\\dirtest");
FileVisitor<Path> fv = new FileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
System.out.println("previsitdirectory : " + dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("visitFile: " + file);
if(file.toFile().getName().endsWith("test2.java")) {
Files.delete(file);
System.out.println("deleted: " + file);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
System.out.println("visitFileFailed :" + file);
return FileVisitResult.TERMINATE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
System.out.println("postVisitDirectory :" + dir);
return FileVisitResult.CONTINUE;
}
};
Files.walkFileTree(p, fv);
}
}
previsitdirectory : c:\dirtest
visitFile: c:\dirtest\cook.jpg
visitFile: c:\dirtest\cookcpy.jpg
previsitdirectory : c:\dirtest\dir1
previsitdirectory : c:\dirtest\dir1\dir2
previsitdirectory : c:\dirtest\dir1\dir2\dir3
previsitdirectory : c:\dirtest\dir1\dir2\dir3\dir4
visitFile: c:\dirtest\dir1\dir2\dir3\dir4\test.java
visitFile: c:\dirtest\dir1\dir2\dir3\dir4\test.txt
postVisitDirectory :c:\dirtest\dir1\dir2\dir3\dir4
visitFile: c:\dirtest\dir1\dir2\dir3\test.java
visitFile: c:\dirtest\dir1\dir2\dir3\test.txt
postVisitDirectory :c:\dirtest\dir1\dir2\dir3
visitFile: c:\dirtest\dir1\dir2\test.java
visitFile: c:\dirtest\dir1\dir2\test.txt
postVisitDirectory :c:\dirtest\dir1\dir2
visitFile: c:\dirtest\dir1\test.java
visitFile: c:\dirtest\dir1\test.txt
postVisitDirectory :c:\dirtest\dir1
visitFile: c:\dirtest\iii
visitFile: c:\dirtest\sample.ser
visitFile: c:\dirtest\showa.txt
visitFile: c:\dirtest\test.java
visitFile: c:\dirtest\test.txt
visitFile: c:\dirtest\test2.java
deleted: c:\dirtest\test2.java
visitFile: c:\dirtest\testfile.txt
visitFile: c:\dirtest\testmakefile.txt
visitFile: c:\dirtest\testwritefile.txt
postVisitDirectory :c:\dirtest