code: public static int visitFile(File f, FileVisitor fv, FileFilter filter) {
          int re = 0;
          if (f.isFile()) {
              fv.visit(f);
              re++;
          } else if (f.isDirectory()) {
              File[] fs = null == filter ? f.listFiles() : f.listFiles(filter);
              if (fs != null)
                  for (File theFile : fs)
                      re += visitFile(theFile, fv, filter);
          }
          return re;
      }
docs: 一个 Vistor 模式的目录深层遍历
  
  @param f
  要遍历的目录或者文件，如果是目录，深层遍历，否则，只访问一次文件
  @param fv
  对文件要进行的操作
  @param filter
  遍历目录时，哪些文件应该被忽略
  @return 遍历的文件个数