一旦你创建了遍历机制(实现 FileVisitor 接口或继承 SimpleFileVisitor 类),那么就可以调用 Files.walkFileTree() 方法遍历目录树。首先我们定义遍历机制:
class ListTree extends SimpleFileVisitor<Path> {
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
System.out.println("Visited directory: " + dir.toString());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) {
System.out.println(exc);
return FileVisitResult.CONTINUE;
}
}
上面这段代码将会打印遍历过的目录名。
最简单的 walkFileTree() 方法接受两个参数,第一个参数表示开始遍历的文件(通常是文件树的根),第二个参数表示遍历机制。下面我们看看如何遍历 C:\rafaelnadal 目录树:
Path listDir = Paths.get("C:/rafaelnadal"); //define the starting file tree
ListTree walk = new ListTree(); //instantiate the walk
try{
Files.walkFileTree(listDir, walk); //start the walk
} catch(IOException e){
System.err.println(e);
}
walkFileTree() 还有一个比较复杂的重载方法,参数为:开始文件、自定义遍历选项、目录访问深度(为了确保遍历所有目录,可以设置 Integer.MAX_VALUE)、遍历机制。自定义选项值中可以使用 FileVisitOption 枚举类型,实际上这个枚举中只有一个常量 ,名为 FOLLOW_LINKS,表示在遍历的时候软链接将会被处理为目标文件(默认情况下,软链接不会被处理)。
调用这个方法的例子如下:
Path listDir = Paths.get("C:/rafaelnadal"); //define the starting file
ListTree walk = new ListTree(); //instantiate the walk
EnumSet opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS); //follow links
try{
Files.walkFileTree(listDir, opts, Integer.MAX_VALUE, walk); //start the walk
} catch(IOException e){
System.err.println(e);
}
注:调用 walkFileTree(start, visitor) 和调用 walkFileTree(start,
EnumSet.noneOf(FileVisitOption.class), Integer.MAX_VALUE, visitor) 的效果是一样的。
上面代码运行后可能的输出为:
Visited directory: C:\rafaelnadal\equipment
Visited directory: C:\rafaelnadal\grandslam\AustralianOpen
Visited directory: C:\rafaelnadal\grandslam\RolandGarros
Visited directory: C:\rafaelnadal\grandslam\USOpen
Visited directory: C:\rafaelnadal\grandslam\Wimbledon
Visited directory: C:\rafaelnadal\grandslam
…
Visited directory: C:\rafaelnadal
文章来源:
http://www.aptusource.org/2014/04/nio-2-recursive-process/
分享到:
相关推荐
AI企联系统 Ai企业级系统开心版 uniapp适配 Web+H5+微信小程序+抖音小程序+双端APP 一款市面上新出的AI企联系统,项目uniapp开发的,支持3.5 4.0 Mj,此套系统5端适配,Web+H5+微信小程序+抖音小程序+双端APP,支持流量主! 自己有能力的可以二开,UI后台也可以自己改。
2000d
根据书籍《Java微服务架构实践》提供源码,通过SpringCloud实现微服务:Eureka+Ribbon+Feign+Zuul
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
C2005
4251_142859321.html
1、资源内容地址:https://editor.csdn.net/md/?articleId=143720799 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
音视频采集屏幕录制和混音录制源码 一、源码介绍 纯粹C#开发,能够采集摄像头帧画面,录制屏幕,采集麦克风,话筒,声卡的声音,并且可以混音采 集,调用简单,性能强劲, 基于.NETFramework2.0,2.0以及更高的framework都可以用。源码交付 ,可以试试看 二、主要功能 基于.NETFramework2.0编写,winform程序。支持摄像头采集,录制屏幕,声卡采集,麦克风话筒采 集,并且可以对采集到的声音混音。直接返回Bitmap图片以及原始声音数据,以便进一步加工,比如 保存为音频文件,或者编码传输。可以应用到直播领域,录制操作教程,游戏等 三、注意事项 1、开发环境为Visual Studio 2010,无数据库,使用.net 2.0开发。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
分布式事务学习
imgcrypt main
cppc++
python python学习代码2【KL】.zip
ASP.NET多用户微信小程序框架源码 (1)开发语言有后端 C# 、webform,asp.net mvc5 ,webapi 2.0,三层架构, 前端:html5,css3,jQuery,,bootstrap,微信小程序开发语言等。 (2)开发环境:VS2015+SqlServer 2008 R2 (3)安装环境: .net framework 4.5 +sql server 2008 R2,应用程序池:集成模式; 用户:admin 密码:admin123
网上商城系统/网上商城购物系统/网上购物商城系统【友价T4版本】 安装教程https://www.ygwzjs.cn/post/22.html 效果演示:http://t4b-www.seoheimao.cn/ 精仿源码交易平台/源码交易网站源码 带数据+安装教程 亮点介绍:本套网站源码交易平台与163源码网大体功能类似。重新设计布局设计制作,并重写了前台DIV+CSS代码,更规范,更精简。(提示:后台样式有部分错位情况,但不影响功能,其它均正常;有兴趣的可以研究下) 盈利点: 1:卖家开店收费 2:成功出售源码,管理员获得提成 3:同行业务合作推广 4:广告位 站长可以根据自己的情况进行定位(如果你手上源码多,甚至可以仅仅自己一人运营,只发布自己的源码,不接受其它商家入驻。) 网上商城系统/网上商城购物系统/网上购物商城系统【友价T4版本】
go 1.23.3 windows-amd64
ASP.NET大学院校用户角色管理源码 一、源码特点 1、系统的用户菜单管理是很多应用系统必备的功能。为了锻炼学生开发应用系统的能力,特别 要求学生从系统分析开始,严格采用UML系统建模,严格采用面向对象的设计方法来开发, 二、菜单功能 1、系统有一级菜单:用户管理、角色管理、人事管理、财务管理、销售管理、技术管理。其中用户管 理有二级菜单:增加一个用户、删除一个用户、修改用户信息、查询用户登录情况、更新个人情况。角 色管理有二级菜单:增加一个角色、删除一个角色、修改角色信息。人事管理有二级菜单:查询人事记 录、统计人事记录、修改人事记录。财务管理有二级菜单:查询财务记录、统计财务记录、修改财务记 录。销售管理有二级菜单:查询销售记录、统计销售记录、修改销售记录。技术管理有二级菜单:查询 技术记录、统计技术记录、修改技术记录。
M07B0lmw-Duke
Airflow:Airflow多执行器和资源管理.docx