FileFilter

File[] listFiles(FileFilter filter)
返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

创建实现类实现FileFilter接口

java.io
Interface FileFilter抽象路径名的过滤器。
boolean accept(File pathname)
测试指定的抽象路径名是否应包含在路径名列表中。
File[] listFiles(FilenameFilter filter)
返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

实现类代码:

public class Demo09FilterImpl implements FileFilter {
@Override
public boolean accept(File pathname) {if (pathname.isDirectory())return true;return pathname.toString().endsWith(".java");
}
}

代码含义:如果文件是文件夹就返回,如果是以java为后缀名的文件也返回;也就是说在测试类方法中listFiles中只有文件夹和java文件可以选择。ListFiles上一章节有所介绍!

测试类代码:

public class Demo09FileFilter {
public static void main(String[] args) {File file = new File("E:\\xpu\\ideaproject\\20190905\\src\\cn\\itcast\\File");digui(file);
}
public static void digui(File dir)
{File[] files = dir.listFiles(new Demo09FilterImpl());//加载过滤器实现类for (File f :files) {if(f.isDirectory())//判断是否为文件夹,如果是digui(f);//使用递归,继续遍历其中的文件else {String s = f.toString();boolean b = s.endsWith(".txt");if (b)System.out.println(f);}}
}
}

效果演示:

Process finished with exit code 0
由于没有过滤的是java文件和文件夹,并没有txt文本文件,所以没有打印结果!

使用匿名内部类来实现文件过滤器

代码:

public class Demo10FileFilterannoy {
public static void main(String[] args) {File file = new File("E:\\xpu\\ideaproject\\20190905\\src\\cn\\itcast\\File");digui(file);
}
public static void digui(File dir)
{/*  File[] files = dir.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {if(pathname.isDirectory())return true;return pathname.toString().endsWith(".java");}});//加载过滤器实现类*///使用lambda/*File[] files = dir.listFiles((pathname)->{{if(pathname.isDirectory())return true;return pathname.toString().endsWith(".java");}});//加载过滤器实现类*///简化lambda/* File[] files = dir.listFiles((pathname)->  pathname.isDirectory()||pathname.toString().endsWith(".java"));//加载过滤器实现类*///第二种过滤器/*File[] files = dir.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {File pathname=new File(dir,name);return pathname.isDirectory()||name.toString().endsWith(".java");}});*///使用lambda/*     File[] files = dir.listFiles((d, name)-> {return new File(d,name).isDirectory()||name.toString().endsWith(".java");});*///简化lambdaFile[] files = dir.listFiles((d,name)->new File(d,name).isDirectory()||name.toString().endsWith(".java"));for (File f :files) {if(f.isDirectory())//判断是否为文件夹,如果是digui(f);//使用递归,继续遍历其中的文件else {String s = f.toString();boolean b = s.endsWith(".java");if (b)System.out.println(f);}}
}
}

其中有使用lambda简化代码:请读者搜索其他文章

FileFilter 文件过滤器相关推荐

  1. 【java笔记】File类(3):FileFilter文件过滤器原理和使用

    在File类中有两个和ListFiles重载的方法,方法的参数传递的是过滤器 java.io.FileFilter接口:用于File对象过滤器 抽象方法:boolean   accept(File p ...

  2. java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件

    搜索文件优化,使用文件过滤器来搜索文件 我们可以使用过滤器来实现在某一目录下指定文件格式的搜索 在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器 一.FileFilter ...

  3. java中listFiles(Filefilter filter)文件过滤器的实现过程

    jdk文档说明 方法:listFiles(Filefilter filter)用法 Filefilter是一个接口,接口中有一个抽象方法:Public bollean accpet(File path ...

  4. java学习笔记(2):获取文件名和自定义文件过滤器

    //自定义文件过滤器import java.io.File;import javax.swing.filechooser.*;public class JavaChooser extends File ...

  5. java.io设计模式_Java IO文件过滤器对命令设计模式的使用

    一. 点睛 java io流里面使用到了很多的设计模式,最典型的就是装饰模式,还有命令模式.通过对文件过滤器功能的简单使用,可以一窥java io流对命令设计模式的典型使用.下面分两部分来讲,先举例说 ...

  6. Java中File文件类之文件过滤器

    文件过滤器 文件过滤器是个接口 过滤器一:File[] listFiles(FileFilter filter) public static void fun1() {// 测试过滤器(FileFil ...

  7. c#file过滤多种格式_用C#做软件:[1]文件过滤器怎么用

    做一个自己的软件一直是自己的梦想,做一个简单的软件比较容易,但是想要做到精细那就必须要了解做软件语言.自己比较喜欢C# ,只是因为她的IDE非常好用.今天就介绍一下c#中文件过滤器的怎么用. 文件过滤 ...

  8. qfiledialog文件过滤_自定义高级QFileDialog文件过滤器

    QFileDialog提供了一个函数---setproxyModel..就是用这个来玩了.就是override filterAcceptsRow的虚函数,里面定制自己的过滤需求.返回bool   下面 ...

  9. listFiles 中 FileFilter/FilenameFilter 文件过滤器

    在File类中有两个和listFiles重载的方法,方法的参数传递的就是过滤器: File[] listFiles(FileFilter filter) 作用:用来过滤文件(File对象) 参数:Fi ...

最新文章

  1. iOS9 This application is modifying the autolayout engine from a background thread, which
  2. 基于deep learning的快速图像检索系统
  3. 极光推送 api ios参数问题
  4. 可持久化Splay 学习笔记
  5. 在OOW2009上寻宝撞大运续(床上篇)
  6. 虚数填补了数学的哪一个缺口?
  7. python树莓派串口通信实例_树莓派通过串口发送数据
  8. XShell 将Linux文件上传、下载到Windows下(rz上传、sz下载)
  9. 电视家3.0怎么安装到电视上?常用三种方法介绍
  10. 单片机学习笔记5--STM32时钟系统(基于百问网STM32F103系列教程)
  11. Ubuntu的VirtualBox虚拟机怎么识别物理机的U盘?我教你。
  12. 聊天也是技术活:内向性格社交宝典-摘抄
  13. 开发一个标题为Flipflop的游戏应用程序
  14. Java数组(Array)
  15. 三种洗牌算法shuffle
  16. UrlRewritingNet ASP.NET 2.0 中的URL重写(映射)
  17. 泰克Tektronix示波器软件TDS2012|TDS2014|TDS2022上位机软件NS-Scope
  18. 极品飞车20ps4服务器位置,极品飞车20官网在哪?中文官网地址一览
  19. 老男孩python全栈s21day15作业
  20. 解决多个iframe嵌套而造成的多个滚动条问题

热门文章

  1. zookeeper源码分析之恢复事务日志
  2. vue循环请求同一个接口,等接口返回数据之后在进行下次循环
  3. 针孔相机(小孔成像)的原理(opencv之手眼标定--1)
  4. 批量保存拼多多批发商城商品主图及视频
  5. 【统计学习方法】模型评估与模型选择
  6. Jetson Nano Nano 2G 官方镜像下载地址
  7. 数字信号处理知识点总结(四):快速傅里叶变换(FFT)
  8. 石家庄神月软件java笔试
  9. 基于MPS先进CFD软件Prometech.ParticleWorks.6.0.0.161003
  10. 有写字好看的人给点实用性技巧吗?