package com.learn.demo03Filter;import java.io.File;/*需求:遍历c:\\abc文件夹,及abc文件夹的子文件夹只要.java结尾的文件c:\\abcc:\\abc\\abc.txtc:\\abc\\abc.javac:\\abc\\ac:\\abc\\a\\a.jpgc:\\abc\\a\\a.javac:\\abc\\bc:\\abc\\b\\b.javac:\\abc\\b\\b.txt我们可以使用过滤器来实现在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器File[] listFiles(FileFilter filter)java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器。作用:用来过滤文件(File对象)抽象方法:用来过滤文件的方法boolean accept(File pathname) 测试指定抽象路径名是否应该包含在某个路径名列表中。参数:File pathname:使用ListFiles方法遍历目录,得到的每一个文件对象File[] listFiles(FilenameFilter filter)java.io.FilenameFilter接口:实现此接口的类实例可用于过滤器文件名。作用:用于过滤文件名称抽象方法:用来过滤文件的方法boolean accept(File dir, String name) 测试指定文件是否应该包含在某一文件列表中。参数:File dir:构造方法中传递的被遍历的目录String name:使用ListFiles方法遍历目录,获取的每一个文件/文件夹的名称注意:两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤的方法accept,在方法中自己定义过滤的规则*/
public class Demo02Filter {public static void main(String[] args) {File file = new File("c:\\abc");getAllFile(file);}/*定义一个方法,参数传递File类型的目录方法中对目录进行遍历*/public static void getAllFile(File dir){//传递过滤器对象 使用匿名内部类/*File[] files = dir.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {//过滤规则,pathname是文件夹或者是.java结尾的文件返回truereturn pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java");}});*///使用Lambda表达式优化匿名内部类(接口中只有一个抽象方法)/*File[] files = dir.listFiles((File pathname)->{return pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java");});*/File[] files = dir.listFiles(pathname->pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java"));/*File[] files = dir.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {//过滤规则,pathname是文件夹或者是.java结尾的文件返回truereturn new File(dir,name).isDirectory() || name.toLowerCase().endsWith(".java");}});*///使用Lambda表达式优化匿名内部类(接口中只有一个抽象方法)/*File[] files = dir.listFiles((File d, String name)->{//过滤规则,pathname是文件夹或者是.java结尾的文件返回truereturn new File(d,name).isDirectory() || name.toLowerCase().endsWith(".java");});*///File[] files = dir.listFiles((d,name)->new File(d,name).isDirectory() || name.toLowerCase().endsWith(".java"));for (File f : files) {//对遍历得到的File对象f进行判断,判断是否是文件夹if(f.isDirectory()){//f是一个文件夹,则继续遍历这个文件夹//我们发现getAllFile方法就是传递文件夹,遍历文件夹的方法//所以直接调用getAllFile方法即可:递归(自己调用自己)getAllFile(f);}else{//f是一个文件,直接打印即可System.out.println(f);}}}
}

FileNameFilter过滤器的使用和Lambda优化程序相关推荐

  1. java filenamefilter_「创作开运礼」Java之FileNameFilter过滤器的使用

    各位小伙伴们大家好,在之前的文章中小编介绍了Java之FileFilter过滤器的使用与及原理的简单介绍,这次小编要介绍的是ileNameFilter过滤器的使用. 在使用FileFilter过滤器的 ...

  2. matlab拓扑优化流程图,Sigmund的99行Matlab拓扑优化程序简析

    引言 Sigmund在2001年在Structural and Multidisciplinary Optimization 上发表一篇名为 "A 99 line topology opti ...

  3. docker~Dockerfile优化程序的部署

    一些理论 我们都知道docker这个容器工具可以帮助我们快速进行环境的部署,这对于运营人员来说,无疑是个福音,而这个工作大叔认为不应该是运营人员干的,而是由开发人员来做,因为只有你知道你干的是什么,你 ...

  4. 栈,寄存器,局部变量,内存,语言级别优化程序的方法

    栈,寄存器,局部变量,内存,语言级别优化程序的方法 栈是内存中开辟出一块空间,对应到汇编中就是栈段 stack segment,即SS,它是由高地址向低地址生长的 寄存器是CPU中的一些高速存储器,有 ...

  5. 使用Lambda优化日志案例

    体验Lambda的更优写法 使用Lambda必然需要一个函数式接口: package com.learn.demo02.Lambda;@FunctionalInterface public inter ...

  6. C# 10 新特性 —— Lambda 优化

    C# 10 新特性 -- Lambda 优化 Intro C# 10 对于 Lambda 做了很多的优化,我们可以在 C# 中更加方便地使用委托和 Lambda 了,下面就来看一些示例 Lambda ...

  7. 性能之巅:定位和优化程序CPU、内存、IO瓶颈

    摘要:性能优化指在不影响系统运行正确性的前提下,使之运行得更快,完成特定功能所需的时间更短,或拥有更强大的服务能力. #一.思维导图 #二.什么是性能优化? 性能优化指在不影响系统运行正确性的前提下, ...

  8. 两阶段鲁棒优化程序 采用微网为模型,主要将安装成本、运营成本以及综合效益三个方面纳入考虑范围

    两阶段鲁棒优化程序 采用微网为模型,主要将安装成本.运营成本以及综合效益三个方面纳入考虑范围,建立两阶段鲁棒优化模型,采用的是CCG方法,本程序为matlab编制,有售后,可以进行!另外本程序考虑发电 ...

  9. 采用CCG和kkt条件编制两阶段鲁棒优化程序,以储能、发电、风电和光伏容量作为第一阶段变量

    #电力系统##微电网#微网两阶段鲁棒优化matlab版 采用CCG和kkt条件编制两阶段鲁棒优化程序,以储能.发电.风电和光伏容量作为第一阶段变量,以主体出力作为第二阶段变量,以负荷.风电和光伏出力作 ...

最新文章

  1. BCH交易量快速增长,年内增幅超比特币和莱特币
  2. HDU - 2612 Find a way(BFS搜索)
  3. 【收藏】windows下 Mysql 错误 Can‘t open and lock privilege tables: Table ‘mysql.user‘ doesn‘t exist
  4. spark shuffle的写操作之准备工作
  5. tomcat web应用_具有可执行Tomcat的独立Web应用程序
  6. CreateThread和_beginthreadex的区别
  7. php 数组 构造为树,从PHP中的平面数组构建树
  8. 骚年快醒醒,你适合转行做前端吗?
  9. Spring学习笔记(入门)
  10. matlab 函数怎么写,MATLAB怎样定义函数(入门) 有一函数 f(x,y)=x^2+sinxy+2y , 写一程序, 输入自变量的值,输出函数值....
  11. Fedora9下codeblocks安装无法编译的问题
  12. 设置部署服务器的运行端口,以太坊swarm配置bzz运行常见问题解决方案
  13. 潜在数学中 放眼数学外——记中国科学院院士、复旦大学教授李大潜zz
  14. 如何学好编程%2B(精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你%2529
  15. Tilt Five AR桌游体验:概念很新颖,但缺乏高质量内容?
  16. 项目中Java的多线程一般用在哪些场景?
  17. 基于模糊控制的Simulink仿真详解
  18. Radiology:脑损伤患者基于语言任务的功能磁共振成像与静息态功能磁共振成像对躯体运动网络的识别
  19. windows桌面图标显示不正常
  20. Windows-电脑蓝屏问题

热门文章

  1. Vue源码后记-更多options参数(1)
  2. 2440,6410,210存储器接口比较
  3. 从NBear到ADO.NET Entity Framework让我迷惑了
  4. commons dbutils 的介绍与使用
  5. git 使用攻略小记
  6. FileEncodingApplicationListener使用以及原理
  7. python学习(三)数字类型示例
  8. 《写给大家看的设计书:实例与创意(修订版)》—1你已经知道多少了?
  9. Zookeeper实战之单机模式
  10. solaris 常用软件安装