Java FileVisitor .postVisitDirectory (T dir, IOException exc)
Syntax
FileVisitor.postVisitDirectory(T dir, IOException exc) has the following syntax.
FileVisitResult postVisitDirectory(T dir, IOException exc) throws IOException
Example
In the following code shows how to use FileVisitor.postVisitDirectory(T dir, IOException exc) method.
/* www . j ava 2 s. c o m*/
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitOption;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.EnumSet;
class Search implements FileVisitor {
private final Path searchedFile;
public boolean found;
public Search(Path searchedFile) {
this.searchedFile = searchedFile;
this.found = false;
}
void search(Path file) throws IOException {
Path name = file.getFileName();
if (name != null && name.equals(searchedFile)) {
System.out.println("Searched file was found: " + searchedFile + " in " + file.toRealPath().toString());
found = true;
}
}
@Override
public FileVisitResult postVisitDirectory(Object dir, IOException exc) throws IOException {
System.out.println("Visited: " + (Path) dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs) throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Object file, BasicFileAttributes attrs) throws IOException {
search((Path) file);
if (!found) {
return FileVisitResult.CONTINUE;
} else {
return FileVisitResult.TERMINATE;
}
}
@Override
public FileVisitResult visitFileFailed(Object file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
}
public class Main {
public static void main(String[] args) throws IOException {
Path searchFile = Paths.get("Demo.jpg");
Search walk = new Search(searchFile);
EnumSet<FileVisitOption> opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
Iterable<Path> dirs = FileSystems.getDefault().getRootDirectories();
for (Path root : dirs) {
if (!walk.found) {
Files.walkFileTree(root, opts, Integer.MAX_VALUE, walk);
}
}
if (!walk.found) {
System.out.println("The file " + searchFile + " was not found!");
}
}
}
The code above generates the following result.