FileVisitor
public
interface
FileVisitor
java.nio.file.FileVisitor<T>
|
Known indirect subclasses
SimpleFileVisitor<T> |
A simple visitor of files with default behavior to visit all files and to
re-throw I/O errors.
|
|
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;
}
}
});
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;
}
});
Summary
Public methods
postVisitDirectory
public abstract FileVisitResult postVisitDirectory (T dir,
IOException exc)
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 |
preVisitDirectory
public abstract FileVisitResult preVisitDirectory (T dir,
BasicFileAttributes attrs)
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 |
visitFile
public abstract FileVisitResult visitFile (T file,
BasicFileAttributes attrs)
Invoked for a file in a directory.
Parameters |
file |
T : a reference to the file |
attrs |
BasicFileAttributes : the file's basic attributes |
visitFileFailed
public abstract FileVisitResult visitFileFailed (T file,
IOException exc)
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 |