FileVisitor遍历文件和目录

主要是用Files的walkFileTree方法进行遍历,先看方法:

  • walkFileTree(Path start, FileVisitor<? super Path> visitor):遍历start路径下的所有文件和子目录。
    
    
  • walkFileTree(Path start,Set<FileVisitOption> options,int maxDepth,FileVisitor<? super Path> visitor):与上一个方法功能类似,该方法最多遍历maxDepth深度的文件。

    上面两个方法都需要FileVisitor参数,它代表一个文件访问器,主要定义了如下四种方法:

  1. FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs):访问子目录之前触发该方法。
  2. FileVisitResult visitFile(T file, BasicFileAttributes attrs):访问file文件时触发该方法。
  3. FileVisitResult visitFileFailed(T file, IOException exc):访问file文件失败时触发该方法。
  4. FileVisitResult postVisitDirectory(T dir, IOException exc):访问子目录之火触发该方法。

   上面定义的四个方法返回值类型FileVisitResult对象,是一个枚举类,代表访问之后的行为:

  • TERMINATE:代表“中止访问”的后续行为
  • SKIP_SIBLINGS:代表“继续访问”的后续行为,但是不访问该文件或者目录的兄弟文件或目录
  • SKIP_SUBTREE:代表“继续访问”的后续行为,但是不访问该文件或者目录的子目录
  • CONTINUE:代表“继续访问”的后续行为。
public class FileVisitorTest {

  public static void main(String[] args) throws Exception{
    //遍历/users/FileVDir目录
    Files.walkFileTree(Paths.get(File.separator,"users","FileVDir"), new SimpleFileVisitor<Path>(){

      @Override
      public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
        System.out.println("正在访问 " + file + " 文件");
        if (file.endsWith("FileVisitorTest.java")){
          System.out.println("找到目标文件,查找结束!");
          return FileVisitResult.TERMINATE; //终止访问
        }

        return FileVisitResult.CONTINUE;
      }

      @Override
      public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
        System.out.println("正在访问 " + dir + " 路径");
        return FileVisitResult.CONTINUE;
      }
    });

  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值