モジュール java.base
パッケージ java.nio.file

インタフェースFileVisitor<T>

型パラメータ:
T - ファイル/ディレクトリのタイプ
既知のすべての実装クラス:
SimpleFileVisitor

public interface FileVisitor<T>
ファイルのビジターです。 このインタフェースの実装は、ファイル・ツリー内の各ファイルをビジットするFiles.walkFileTreeメソッドに渡されます。

使用例: ファイル・ツリーを削除するとします。 その場合、各ディレクトリの削除は、そのディレクトリ内のエントリを削除したあとで行うようにしてください。

    Path start = ...
    Files.walkFileTree(start, new SimpleFileVisitor<Path>() {
        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
            throws IOException
        {
            Files.delete(file);
            return FileVisitResult.CONTINUE;
        }
        @Override
        public FileVisitResult postVisitDirectory(Path dir, IOException e)
            throws IOException
        {
            if (e == null) {
                Files.delete(dir);
                return FileVisitResult.CONTINUE;
            } else {
                // directory iteration failed
                throw e;
            }
        }
    });

さらに、ファイル・ツリーをターゲットの場所にコピーするとします。 その場合、シンボリック・リンクをたどり、ターゲット・ディレクトリを作成してから、そのディレクトリ内のエントリをコピーするようにしてください。

    final Path source = ...
    final Path target = ...

    Files.walkFileTree(source, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE,
        new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
                throws IOException
            {
                Path targetdir = target.resolve(source.relativize(dir));
                try {
                    Files.copy(dir, targetdir);
                } catch (FileAlreadyExistsException e) {
                     if (!Files.isDirectory(targetdir))
                         throw e;
                }
                return CONTINUE;
            }
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                throws IOException
            {
                Files.copy(file, target.resolve(source.relativize(file)));
                return CONTINUE;
            }
        });

導入されたバージョン:
1.7