Java7新特性之遍历目录树
来源:互联网 发布:seo编辑培训ppt 编辑:程序博客网 时间:2024/06/05 06:37
虽然现在都使用Java8了,但是Java7的新特性你是否都知道了呢?
Java7之前,虽然能做到遍历目录与目录树,但比较麻烦,需要自己编码。
新的IO基于Path提供了方便的目录与目录树遍历及过滤等,非常简单方便。
目录遍历
通过Files的工具方法,可以获取某个path对应的DirectoryStream接口,通过此接口就能遍历改path下面(直接子path)的项目。
Path dir= Paths.get("f:\\"); //得到改path的目录流接口 DirectoryStream<Path> directoryStream = Files.newDirectoryStream(dir); for(Path item : directoryStream){ System.out.println(item.toAbsolutePath()+":"+item.getFileName()); }
也可以方便的过滤某些形式的文件,如:
//得到改path下所有.txt文件的目录流接口
DirectoryStream txtStream=Files.newDirectoryStream(dir,”*.txt”);
System.out.println("===txt==="); for(Path item : txtStream){ System.out.println(item.toAbsolutePath()+":"+item.getFileName()); }
目录树遍历
新的api支持递归的遍历整改目录下的所有目录及文件。
通过Files.walkFileTree(path,fileVisittor))即可实现。
第一个参数是要遍历的path
第二个参数是一个遍历过程中的处理接口FileVisitor。它提供了遍历文件树的各种操作:
preVisitDirectory - 一个路径被访问时调用PostVisitDirectory - 一个路径的所有节点被访问后调用。如果有错误发生,exception会传递给这个方法visitFile - 文件被访问时被调用。该文件的文件属性被传递给这个方法visitFileFailed - 当文件不能被访问时,此方法被调用。Exception被传递给这个方法。如果你比较懒,不想实现所有方法。你可以选择继承 SimpleFileVisitor。它帮你实现了上述方法,你只需Override 你感兴趣的方法。
一个实例:
import java.io.IOException;import java.nio.file.*;import java.nio.file.attribute.BasicFileAttributes;public class FileReader { public static void main(String[] args) throws Exception { getJava("G:\\project\\acceptance"); } public static void getJava(String path)throws Exception{ Path dir = Paths.get(path); //得到改path的目录流接口 DirectoryStream<Path> directoryStream = Files.newDirectoryStream(dir); for(Path item : directoryStream){ System.out.println(item.toAbsolutePath()+":"+item.getFileName()); } //得到改path下所有.txt文件的目录流接口 DirectoryStream<Path> txtStream=Files.newDirectoryStream(dir,"*.txt"); System.out.println("===txt==="); for(Path item : txtStream){ System.out.println(item.toAbsolutePath()+":"+item.getFileName()); } //递归遍历此目录下的所有文件 System.out.println("===dir tree==="); Files.walkFileTree(dir,new VisitorFile()); } static class VisitorFile extends SimpleFileVisitor<Path>{ //访问目录及子目录中的每个path的方法 @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { if(file.toAbsolutePath().toString().endsWith(".java")){ System.out.println(file.toAbsolutePath()); } //表示继续遍历 return FileVisitResult.CONTINUE; } //访问某个path失败时调用的方法,默认抛出异常 @Override public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { System.out.println(file+";"+exc.getClass()); //表示继续遍历 return FileVisitResult.CONTINUE; } }}
阅读全文
0 0
- Java7新特性之遍历目录树
- java7新特性之新语法1
- java7新特性之新语法2
- java7新特性之Improved exception handling
- java7新特性之Diamond syntax
- java7.的新特性!
- Java7新特性
- java7 新特性
- java7 新特性
- Java7新特性
- java7 新特性
- java7新特性(1)
- java7新特性
- JAVA7新特性
- Java7语法新特性
- java7 语法新特性
- Java7新特性
- java7 新特性
- LeetCode-Q46-Permutations
- [NLP论文阅读] Discourse-Based Objectives for Fast Unsupervised Sentence Representation Learning
- 单据号生成方法比较
- C/C++中sizeof()的用法——32位和64位下的sizeof()
- 微信小程序label控件,你们真的会用吗?
- Java7新特性之遍历目录树
- wav文件读取参考
- 莫比乌斯反演——从入门到放弃
- vue.js入门与提高实战教程
- 华为第一轮技术面试被刷掉
- [转载]关于桥方法的细节
- 几个查询专利和软件著作权的网站
- 浅聊where和having语句
- js实现对象数组化