欢迎来到知了堂!
联系电话:知了堂-电话号码 028-62016472

Java中使用Files类遍历文件夹-知了堂

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)

  访问目录之后触发

Java中使用Files类遍历文件夹

 

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

  CONTINUE 继续访问

  TERMINATE 停止访问

  SKIP_SUBTREE 继续访问,跳过当前目录的子目录树

  SKIP_SIBLINGS 继续访问,跳过同级目录或者文件
 

  遍历文件夹代码示例

Path path = Paths.get("d:", "MyWorkSpace", "IdeaProjects");
// 遍历D:MyWorkSpaceIdeaProjects目录下的所有文件和子目录,寻找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中的全部方法。

       版权声明:本文来源于网络,由知了堂搜集整理,仅供大家学习