package bjc.utils.funcutils; import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Path; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.function.BiPredicate; final class FunctionalFileVisitor extends SimpleFileVisitor { private BiPredicate predicate; private BiPredicate action; public FunctionalFileVisitor( BiPredicate predicate, BiPredicate action) { this.predicate = predicate; this.action = action; } @Override public FileVisitResult preVisitDirectory( Path dir, BasicFileAttributes attrs) throws IOException { if (predicate.test(dir, attrs)) { return FileVisitResult.CONTINUE; } return FileVisitResult.SKIP_SUBTREE; } @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { if (action.test(file, attrs)) { return FileVisitResult.CONTINUE; } return FileVisitResult.TERMINATE; } }