使用Java 7,通过Paths和Files功能引入了一种更快的遍历目录树的方法。它们比“旧”File方法快得多。
这将是使用正则表达式遍历并检查路径名的代码:
public final void test() throws IOException, InterruptedException {
    final Path rootDir = Paths.get("path to your directory where the walk starts");
    
    Files.walkFileTree(rootDir, new FileVisitor<Path>() {
        
        private Pattern pattern = Pattern.compile("^(.*?)");
        @Override
        public FileVisitResult preVisitDirectory(Path path,
                BasicFileAttributes atts) throws IOException {
            boolean matches = pattern.matcher(path.toString()).matches();
            
            return (matches)? FileVisitResult.CONTINUE:FileVisitResult.SKIP_SUBTREE;
        }
        @Override
        public FileVisitResult visitFile(Path path, BasicFileAttributes mainAtts)
                throws IOException {
            boolean matches = pattern.matcher(path.toString()).matches();
            
            return FileVisitResult.CONTINUE;
        }
        @Override
        public FileVisitResult postVisitDirectory(Path path,
                IOException exc) throws IOException {
            
            return FileVisitResult.CONTINUE;
        }
        @Override
        public FileVisitResult visitFileFailed(Path path, IOException exc)
                throws IOException {
            exc.printStackTrace();
            
            return path.equals(rootDir)? FileVisitResult.TERMINATE:FileVisitResult.CONTINUE;
        }
    });
}