技术开发 频道

Java7 NIO.2入门:文件系统API教程

  清单 1. FileVisitor 实现

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;
    }

};

  清单 1 中 FileVisitor 的实现,应当为其访问的每个目录和文件打印消息,并给出从其 BasicFileAttributes 中获取的文件大小。

  接下来,我们想创建开始我们文件访问的 Path。利用类 java.nio.Paths 完成这一操作:

Path headDir = Paths.get("headDir");

  我们可以利用两个方法中的任何一个在 类上启动树遍历:

  public static void walkFileTree(Path head, FileVisitor fileVisitor) 浏览头目录下的文件树,在这一过程中调用在 fileVisitor 中实现的回调方法。

  public static void walkFileTree(Path head, Set options, int depth, FileVisitor fileVisitor) 与前面的方法相似,但是它给出两个附加的参数来指定访问选项,以及遍历将访问文件树中的多少个目录。

  我们将使用 walkFileTree() 方法的简单版本,来开始浏览文件数的流程:

Files.walkFileTree(headDir, myFileVisitor);

  假设目录结构是这样的:

headDir
  |
--- myFile1
  |
--- mySubDirectory1
  |    
\myFile2
  
\--- mySubDirectory2
        |
--- myFile3
        
\--- mySubdirectory3
              
\---myFile4

  清单 2 展示了这一例子的输出:

0
相关文章