Top Description Methods
java.nio.file

public Interface FileVisitor<T>

Known Direct Implementers
java.nio.file.SimpleFileVisitor
Type Parameters
<T>
the type of file/directory
Imports
java.nio.file.attribute.BasicFileAttributes, java.io.IOException

A visitor of files. An implementation of this interface is provided to the Files.walkFileTree methods to visit each file in a file tree.

Usage Examples: Suppose we want to delete a file tree. In that case, each directory should be deleted after the entries in the directory are deleted.

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; } } });
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;
        }
    }
});

Furthermore, suppose we want to copy a file tree to a target location. In that case, symbolic links should be followed and the target directory should be created before the entries in the directory are copied.

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; } });
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;
        }
    });
Since
1.7

Method Summary

Modifier and TypeMethod and Description
public FileVisitResult

Returns:

the visit result
postVisitDirectory
(T
a reference to the directory
dir
,
IOException
null if the iteration of the directory completes without an error; otherwise the I/O exception that caused the iteration of the directory to complete prematurely
exc
)

Invoked for a directory after entries in the directory, and all of their descendants, have been visited.

public FileVisitResult

Returns:

the visit result
preVisitDirectory
(T
a reference to the directory
dir
,
BasicFileAttributes
the directory's basic attributes
attrs
)

Invoked for a directory before entries in the directory are visited.

public FileVisitResult

Returns:

the visit result
visitFile
(T
a reference to the file
file
,
BasicFileAttributes
the file's basic attributes
attrs
)

Invoked for a file in a directory.

public FileVisitResult

Returns:

the visit result
visitFileFailed
(T
a reference to the file
file
,
IOException
the I/O exception that prevented the file from being visited
exc
)

Invoked for a file that could not be visited.

Method Detail

postVisitDirectoryback to summary
public FileVisitResult postVisitDirectory(T dir, IOException exc) throws IOException

Invoked for a directory after entries in the directory, and all of their descendants, have been visited. This method is also invoked when iteration of the directory completes prematurely (by a visitFile method returning SKIP_SIBLINGS, or an I/O error when iterating over the directory).

Parameters
dir:T

a reference to the directory

exc:IOException

null if the iteration of the directory completes without an error; otherwise the I/O exception that caused the iteration of the directory to complete prematurely

Returns:FileVisitResult

the visit result

Exceptions
IOException:
if an I/O error occurs
preVisitDirectoryback to summary
public FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs) throws IOException

Invoked for a directory before entries in the directory are visited.

If this method returns CONTINUE, then entries in the directory are visited. If this method returns SKIP_SUBTREE or SKIP_SIBLINGS then entries in the directory (and any descendants) will not be visited.

Parameters
dir:T

a reference to the directory

attrs:BasicFileAttributes

the directory's basic attributes

Returns:FileVisitResult

the visit result

Exceptions
IOException:
if an I/O error occurs
visitFileback to summary
public FileVisitResult visitFile(T file, BasicFileAttributes attrs) throws IOException

Invoked for a file in a directory.

Parameters
file:T

a reference to the file

attrs:BasicFileAttributes

the file's basic attributes

Returns:FileVisitResult

the visit result

Exceptions
IOException:
if an I/O error occurs
visitFileFailedback to summary
public FileVisitResult visitFileFailed(T file, IOException exc) throws IOException

Invoked for a file that could not be visited. This method is invoked if the file's attributes could not be read, the file is a directory that could not be opened, and other reasons.

Parameters
file:T

a reference to the file

exc:IOException

the I/O exception that prevented the file from being visited

Returns:FileVisitResult

the visit result

Exceptions
IOException:
if an I/O error occurs