Java NIO.2 使用Files类遍历文件夹
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java NIO.2 使用Files类遍历文件夹,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3359字,纯文字阅读大概需要5分钟。
内容图文
![Java NIO.2 使用Files类遍历文件夹](/upload/InfoBanner/zyjiaocheng/816/da515153bad744a7bf49df9a4848f365.jpg)
在以前的Java版本中,如果要遍历某个文件夹下所有的子文件、子文件夹,需要我们自己写递归,很麻烦。
在Java7以后,我们可以NIO.2中的Files工具类来遍历某个文件夹(会自动递归)。
大致用法:
1 Path path=Paths.get("D:\\二次元"); 2 3 Files.walkFileTree(path,new FileVisitor<Path>(){ 4 5 //访问文件夹之前自动调用此方法 6 @Override 7 public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { 8 return null; 9 } 10 11 //访问文件时自动调用此方法 12 @Override 13 public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { 14 return null; 15 } 16 17 //访问文件失败时自动调用此方法 18 @Override 19 public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { 20 return null; 21 } 22 23 //访问文件夹之后自动调用此方法 24 @Override 25 public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { 26 return null; 27 } 28 });
Files.walkFileTree(Path path, FileVisitor visitor);
静态方法。第一个参数指定要遍历的文件夹,第二个参数是FileVisitor对象,指定遍历时如何处理文件、文件夹。
FileVisitor是一个接口,需要实现4个方法。当然我们可以使用适配器 SimpleFileVisitor 类,只重写我们需要的方法。
4个方法的返回值类型均是FileVisitResult,FileVisitReset是一个枚举类。代表访问此文件/文件夹后的后续行为。可使用的值:
- CONTINUE 继续访问(/遍历)
- TERMINATE 停止访问(/遍历)
- SKIP_SUBTREE 继续访问,但不访问此文件/文件夹的子目录树
- SKIP_SIBLINGS 继续访问,但不访问此文件/文件夹的兄弟文件/文件夹。
需要以 FileVisitResult. 的形式引用,示例:FileVisitResult.CONTINUE
示例:输出每个文件、文件夹的名称。
1 Path path=Paths.get("D:\\二次元"); 2 3 Files.walkFileTree(path,new FileVisitor<Path>(){ 4 5 //访问文件夹之前自动调用此方法 6 @Override 7 public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { 8 System.out.println(dir.getFileName()); 9 return FileVisitResult.CONTINUE; 10 } 11 12 //访问文件时自动调用此方法 13 @Override 14 public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { 15 System.out.println(file.getFileName()); 16 return FileVisitResult.CONTINUE; 17 } 18 19 //访问文件失败时自动调用此方法 20 @Override 21 public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { 22 return FileVisitResult.CONTINUE; 23 } 24 25 //访问文件夹之后自动调用此方法 26 @Override 27 public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { 28 return FileVisitResult.CONTINUE; 29 } 30 });
作为根的文件夹(上例中的“二次元”)也算作一个遍历的节点。
PreVisitDirectory()、PostVisitDirectory()、VisitFile()这3个方法,不能返回null,如果返回null,编译时ok,但运行时往往会报错——空指针异常。IDEA下的代码自动完成,4个方法的默认实现都是return null,需要注意。
内容总结
以上是互联网集市为您收集整理的Java NIO.2 使用Files类遍历文件夹全部内容,希望文章能够帮你解决Java NIO.2 使用Files类遍历文件夹所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。