FileFilter 文件过滤器
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 文件过滤器相关推荐
- 【java笔记】File类(3):FileFilter文件过滤器原理和使用
在File类中有两个和ListFiles重载的方法,方法的参数传递的是过滤器 java.io.FileFilter接口:用于File对象过滤器 抽象方法:boolean accept(File p ...
- java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件
搜索文件优化,使用文件过滤器来搜索文件 我们可以使用过滤器来实现在某一目录下指定文件格式的搜索 在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器 一.FileFilter ...
- java中listFiles(Filefilter filter)文件过滤器的实现过程
jdk文档说明 方法:listFiles(Filefilter filter)用法 Filefilter是一个接口,接口中有一个抽象方法:Public bollean accpet(File path ...
- java学习笔记(2):获取文件名和自定义文件过滤器
//自定义文件过滤器import java.io.File;import javax.swing.filechooser.*;public class JavaChooser extends File ...
- java.io设计模式_Java IO文件过滤器对命令设计模式的使用
一. 点睛 java io流里面使用到了很多的设计模式,最典型的就是装饰模式,还有命令模式.通过对文件过滤器功能的简单使用,可以一窥java io流对命令设计模式的典型使用.下面分两部分来讲,先举例说 ...
- Java中File文件类之文件过滤器
文件过滤器 文件过滤器是个接口 过滤器一:File[] listFiles(FileFilter filter) public static void fun1() {// 测试过滤器(FileFil ...
- c#file过滤多种格式_用C#做软件:[1]文件过滤器怎么用
做一个自己的软件一直是自己的梦想,做一个简单的软件比较容易,但是想要做到精细那就必须要了解做软件语言.自己比较喜欢C# ,只是因为她的IDE非常好用.今天就介绍一下c#中文件过滤器的怎么用. 文件过滤 ...
- qfiledialog文件过滤_自定义高级QFileDialog文件过滤器
QFileDialog提供了一个函数---setproxyModel..就是用这个来玩了.就是override filterAcceptsRow的虚函数,里面定制自己的过滤需求.返回bool 下面 ...
- listFiles 中 FileFilter/FilenameFilter 文件过滤器
在File类中有两个和listFiles重载的方法,方法的参数传递的就是过滤器: File[] listFiles(FileFilter filter) 作用:用来过滤文件(File对象) 参数:Fi ...
最新文章
- iOS9 This application is modifying the autolayout engine from a background thread, which
- 基于deep learning的快速图像检索系统
- 极光推送 api ios参数问题
- 可持久化Splay 学习笔记
- 在OOW2009上寻宝撞大运续(床上篇)
- 虚数填补了数学的哪一个缺口?
- python树莓派串口通信实例_树莓派通过串口发送数据
- XShell 将Linux文件上传、下载到Windows下(rz上传、sz下载)
- 电视家3.0怎么安装到电视上?常用三种方法介绍
- 单片机学习笔记5--STM32时钟系统(基于百问网STM32F103系列教程)
- Ubuntu的VirtualBox虚拟机怎么识别物理机的U盘?我教你。
- 聊天也是技术活:内向性格社交宝典-摘抄
- 开发一个标题为Flipflop的游戏应用程序
- Java数组(Array)
- 三种洗牌算法shuffle
- UrlRewritingNet ASP.NET 2.0 中的URL重写(映射)
- 泰克Tektronix示波器软件TDS2012|TDS2014|TDS2022上位机软件NS-Scope
- 极品飞车20ps4服务器位置,极品飞车20官网在哪?中文官网地址一览
- 老男孩python全栈s21day15作业
- 解决多个iframe嵌套而造成的多个滚动条问题