LoginSignup
0
0

More than 1 year has passed since last update.

Files.walkTree()

Posted at

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0