package com.ibm.jnio2;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.FileVisitor;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
/* This example demonstrates some of the functionality of the FileVisitor API and related classes.
The main method does not catch any of the relevant exceptions thrown by the various API
to make the example code easier to read. */
class FileVisitorExample {
public static void main(String[] args) throws IOException {
// Create the directory tree for this test
createDirTree();
// Create our FileVisitor implementation by overriding two of the methods defined in
// SimpleFileVisitor.
FileVisitor<Path> myFileVisitor = new SimpleFileVisitor<Path>() {
//@Override
public FileVisitResult preVisitDirectory(Path dir) {
System.out.println("I'm about to visit the "+dir+" directory");
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attribs) {
System.out.println("I'm visiting file "+file+" which has size "+attribs.size());
return FileVisitResult.CONTINUE;
}
};
// Get a Path instance for the directory we want to visit
Path headDir = Paths.get("headDir");
// Now walk the file tree created earlier
Files.walkFileTree(headDir, myFileVisitor);
}
// This method creates the directory tree for the example under the current directory
private static void createDirTree() throws IOException {
File headDir = new File("headDir");
headDir.mkdir();
headDir.deleteOnExit();
File myFile1 = new File(headDir, "myFile1");
myFile1.createNewFile();
myFile1.deleteOnExit();
File mySubDirectory1 = new File(headDir, "mySubDirectory1");
mySubDirectory1.mkdir();
mySubDirectory1.deleteOnExit();
File myFile2 = new File(mySubDirectory1, "myFile2");
myFile2.createNewFile();
myFile2.deleteOnExit();
File mySubDirectory2 = new File(headDir, "mySubDirectory2");
mySubDirectory2.mkdir();
mySubDirectory2.deleteOnExit();
File myFile3 = new File(mySubDirectory2, "myFile3");
myFile3.createNewFile();
myFile3.deleteOnExit();
File mySubDirectory3 = new File(mySubDirectory2, "mySubDirectory3");
mySubDirectory3.mkdir();
mySubDirectory3.deleteOnExit();
File myFile4 = new File(mySubDirectory3, "myFile4");
myFile4.createNewFile();
myFile4.deleteOnExit();
}
}