Java中使用Files类遍历文件夹

Files类属于java.nio.file包,是Java7新增的文件操作工具类。

使用Files类提供的walkFileTree(Path start, FileVisitor<? super Path> visitor)方法,能够遍历指定目录下的所有文件和文件夹。

 

walkFileTree方法需要FileVisitor类型的参数,FileVisitor是一个接口,遍历文件和目录时会触发定义在FileVisitor中的方法。

方法如下:

  • FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs)
  • 访问目录之前触发

 

  • FileVisitResult visitFile(T file, BasicFileAttributes attrs)
  • 访问文件时触发

 

  • FileVisitResult visitFileFailed(T file, IOException exc)
  • 访问文件错误时触发

 

  • FileVisitResult postVisitDirectory(T dir, IOException exc)
  • 访问目录之后触发

 

上面4个方法都返回FileVisitResult 对象,定义了4种访问后的行为。

  • CONTINUE 继续访问
  • TERMINATE 停止访问
  • SKIP_SUBTREE 继续访问,跳过当前目录的子目录树
  • SKIP_SIBLINGS 继续访问,跳过同级目录或者文件

 

遍历文件夹代码示例

Path path = Paths.get("d:", "MyWorkSpace", "IdeaProjects");
// 遍历D:\MyWorkSpace\IdeaProjects目录下的所有文件和子目录,寻找FileVisitorTest.java文件
Files.walkFileTree(path
		, new SimpleFileVisitor<Path>() {
			// 访问文件时触发
			@Override
			public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
				if (file.endsWith("FileVisitorTest.java")) {
					System.out.println("已经找到FileVisitorTest.java文件!停止查找!");
					return FileVisitResult.TERMINATE;
				}
				System.out.println("正在访问" + file + "文件");
				return FileVisitResult.CONTINUE;
			}

			// 访问目录时触发
			@Override
			public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
				System.out.println("正在访问:" + dir + " 目录");
				return FileVisitResult.CONTINUE;
			}
		});

注:SimpleFileVisitor是FileVisitor的实现类,使用它我们无需重写FileVisitor中的全部方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值