Spec-Zone.ru › OpenJDK 24

Интерфейс 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

Краткое описание методов

Модификатор и тип Метод Описание
FileVisitResult postVisitDirectory(T dir, IOException exc)
Вызывается для каталога после посещения записей в каталоге и всех его потомков.
FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs)
Вызывается для каталога перед посещением записей в каталоге.
FileVisitResult visitFile(T file, BasicFileAttributes attrs)
Вызывается для файла в каталоге.
FileVisitResult visitFileFailed(T file, IOException exc)
Вызывается для файла, который не удалось посетить.

Подробное описание методов

preVisitDirectory

FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs) throws IOException
Вызывается для каталога перед посещением записей в каталоге.

Если этот метод возвращает CONTINUE, то записи в каталоге посещаются. Если этот метод возвращает SKIP_SUBTREE или SKIP_SIBLINGS, то записи в каталоге (и все потомки) не будут посещены.

Параметры:
dir - ссылка на каталог
attrs - базовые атрибуты каталога
Возвращает:
результат посещения
Исключения:
IOException - если произошла ошибка ввода-вывода

visitFile

FileVisitResult visitFile(T file, BasicFileAttributes attrs) throws IOException
Вызывается для файла в каталоге.
Параметры:
file - ссылка на файл
attrs - базовые атрибуты файла
Возвращает:
результат посещения
Исключения:
IOException - если произошла ошибка ввода-вывода

visitFileFailed

FileVisitResult visitFileFailed(T file, IOException exc) throws IOException
Вызывается для файла, который не удалось посетить. Этот метод вызывается, если атрибуты файла не могут быть прочитаны, файл является каталогом, который не может быть открыт, и по другим причинам.
Параметры:
file - ссылка на файл
exc - исключение ввода-вывода, которое помешало посещению файла
Возвращает:
результат посещения
Исключения:
IOException - если произошла ошибка ввода-вывода

postVisitDirectory

FileVisitResult postVisitDirectory(T dir, IOException exc) throws IOException
Вызывается для каталога после посещения записей в каталоге и всех его потомков. Этот метод также вызывается, когда итерация по каталогу завершается преждевременно (методом visitFile, возвращающим SKIP_SIBLINGS, или ошибка ввода-вывода при итерации по каталогу).
Параметры:
dir - ссылка на каталог
exc - null если итерация по каталогу завершилась без ошибки; в противном случае исключение ввода-вывода, которое привело к преждевременному завершению итерации по каталогу
Возвращает:
результат посещения
Исключения:
IOException - если произошла ошибка ввода-вывода

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/file/FileVisitor.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API