1.Files.walkFileTree():

顺序:顺序访问,碰到目录会一直递归下去

package com.test;
import java.io.File;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.LinkedList;
import java.util.List;
public class FileFinder { public static void main(String[] args) throws IOException {
Path startingDir = Paths.get("D:\\test"); List<String> result = new LinkedList<String>(); Files.walkFileTree(startingDir, new FilterFilesVisitor(result)); System.out.println("result.size()=" + result.size());
for (String name : result) {
System.out.println(name);
}
} private static class FilterFilesVisitor extends SimpleFileVisitor<Path> { private List<String> result = new LinkedList<String>(); public FilterFilesVisitor(List<String> result) {
this.result = result;
} /**
* 正在访问一个文件时要干啥
*/
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
if (file.toString().endsWith(".java")) {
result.add(file.toString());
System.out.println("文件名"+file.getFileName());
System.out.println("文件全路径"+file.toString());
File f = file.toFile();
f.delete();
System.out.println(file.getFileName()+"已删除");
} // SKIP_SIBLINGS:继续遍历,但忽略当前节点的所有兄弟节点直接返回上一层继续遍历
// SKIP_SUBTREE:继续遍历,但是忽略子目录,但是子文件还是会访问;
// TERMINATE:终止遍历
//继续遍历
return FileVisitResult.SKIP_SUBTREE;
} /**
* 访问一个目录前要干啥
*/
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
// TODO Auto-generated method stub
return super.preVisitDirectory(dir, attrs);
} /**
* 访问一个目录后要干啥
*/
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
// TODO Auto-generated method stub return super.postVisitDirectory(dir, exc);
} /**
* 访问一个文件失败时要干啥
*/
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
// TODO Auto-generated method stub
return super.visitFileFailed(file, exc);
}
}
}

java7:(Files.walkFileTree())的更多相关文章

  1. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  2. Spring Boot干货系列:(十二)Spring Boot使用单元测试(转)

    前言这次来介绍下Spring Boot中对单元测试的整合使用,本篇会通过以下4点来介绍,基本满足日常需求 Service层单元测试 Controller层单元测试 新断言assertThat使用 单元 ...

  3. Django开发:(3.1)ORM:单表操作

    MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需 ...

  4. 数位DP入门:(bzoj1833+3209)

    //我是来看文章创建时间的= = 膜拜了一下蔡大神.... 人生第一道自己写的数位DP...好吧以前是看题解然后也不知道为什么就过了的>_< 虽然说现在还是只会裸题= = 数位DP介绍: ...

  5. 学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator

    前言 主要是完成微服务的监控,完成监控治理.可以查看微服务间的数据处理和调用,当它们之间出现了异常,就可以快速定位到出现问题的地方. springboot - version: 2.0 正文 依赖 m ...

  6. 学习Spring Boot:(二十一)使用 EhCache 实现数据缓存

    前言 当多次查询数据库影响到系统性能的时候,可以考虑使用缓存,来解决数据访问新能的问题. SpringBoot 已经为我们提供了自动配置多个 CacheManager 的实现,只要去实现使用它就可以了 ...

  7. 最短路径:(Dijkstra & Floyd)

    Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Di ...

  8. tdd:(react + mocha)环境配置

    写在前面: 在git上面clone一些项目的时候老是可以看到一些测试文件,于是就学习了一下TDD: TDD —— Test-Drive Development是测试驱动开发的意思,是敏捷开发中的一项核 ...

  9. 反射学习:(System.Reflection)

    反射为了动态(运行时动态) 原理:读取metadata(?)   Assembly assembly = Assembly.Load("TestReflections");//反射 ...

随机推荐

  1. Web Api(3)

    Web API中的路由. 路由机制会把一个请求的URL映射到一个Controller上面的Action.这一点很关键.也就说你发送一个Http请求,MVC框架会解析这个请求的URL,之后尝试把它去映射 ...

  2. pycharm图像不能显示,之前是可以显示的。显示一两次突然不显示了

    网上说是什么包问题的就说了.我遇到一个非常奇葩的问题 因为你的设置可能是这样 每次都在窗口右侧的工具栏那边显示.可能突然心情不佳就不显示了.然后你再把勾去掉即可.你要喜欢再点上也行.

  3. QSettings 介绍

    https://blog.csdn.net/liang19890820/article/details/50513695 QSettings settings(“./test.ini”, QSetti ...

  4. [新版] CASthesis 模板编译的问题

    国科大官方学位论文latex模板 地址:https://github.com/mohuangrui/ucasthesis 它支持硕士和博士学位论文.博士后出站报告的撰写. 以下是使用记录. 一.撰写全 ...

  5. mysql随机取出n条数据

    SELECT * FROM  tableName  ORDER BY  RAND() LIMIT n      数据量小的话还可以, 数据量大起来了, 就影响性能了. $rubbish = (new ...

  6. SQL Server代码的一种学习方法

    使用SQL Server Management Studio的操作过程中,界面上方都可以生成sql脚本代码. 如新建数据库时: CREATE DATABASE [db_New] ON PRIMARY ...

  7. maven打断点报错

  8. flask框架(三):flask配置文件

    flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为: { 'DEBUG': get_debug_flag(default=False), 是否开启Debug ...

  9. jQuery的replaceWith()函数用法详解

    replaceWith,替换元素 replaceWith() 方法将选择的元素的内容替换为其他内容. 我们先在先看一个实例 <!DOCTYPE html> <html> < ...

  10. Quartz.NET 作业调度(一):Test

    Quartz.NET 是一个开源的作业调度框架,是 Java 作业调度框架 Quartz 的.NET 版本,对于周期性的任务,其作业和触发器的结合,极大的简化了代码的编写,大多时候我们只需要关注作业本 ...