FileFilter概述

java.io.FileFilter是一个接口,是File的过滤器。

该接口的对象可以传递给File类的listFiles(FileFilter filter)作为参数,FileFilter接口中只有一个方法。

boolean accept(File pathname):测试pathname是否应该包含在当前File目录中,符合则返回true。

FileFilter接口

public interfaceFileFilter {/*** 测试指定的抽象路径名是否应包含在路径名列表中。

*

*@parampathname 要测试的抽象路径名

*@returntrue if and only if pathname

* should be included*/

booleanaccept(File pathname);

}

举例

递归查看某文件夹中以.java为后缀的文件

定义FileFilter接口的实现类,规定筛选规则

importjava.io.File;importjava.io.FileFilter;public class FileFilterImp implementsFileFilter {/*** 过滤规则:

* accept方法中,判断file对象是否是以.java结尾,

* 如果是,返回true,否则返回false

*@parampathname file传递过来的路径名称

*@returntrue or false*/@Overridepublic booleanaccept(File pathname) {if(pathname.isDirectory()) {return true;

}return pathname.getName().endsWith(".java");

}

}

定义筛选方法并测试

importjava.io.File;importjava.io.FileFilter;public classDemo01FileFilter {public static voidmain(String[] args) {

File file= new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo29");

ergodic1(file);

System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

FileFilterImp filter= newFileFilterImp();

ergodic2(file, filter);

}/*** 过滤掉不是.java为后缀的文件名

*@paramfile 文件或目录*/

public static voidergodic1(File file) {//是否存在该目录或文件

if(file.exists()) {//存在该目录或文件,获取该目录下的所有目录和文件

File[] files =file.listFiles();//遍历该目录下的文件或目录

assert files != null;for(File f : files) {//该目录下,如果是目录,使用递归。如果是文件,直接输出。

if(f.isDirectory()) {

ergodic1(f);

}else if (f.getName().endsWith(".java")) {

System.out.println(f.getName());

}

}

}else{if(file.isFile()) {

System.out.println("不存在该文件");

}else{

System.out.println("不存在该目录");

}

}

}public static voidergodic2(File file, FileFilter filter) {if(file.exists()) {

File[] files=file.listFiles(filter);for(File f : files) {if(f.isDirectory()) {

ergodic2(f, filter);

}else{

System.out.println(f.getName());

}

}

}else{if(file.isFile()) {

System.out.println("不存在该文件");

}else{

System.out.println("不存在该目录");

}

}

}

}

控制台输出

FileFilterImp.java

Demo01FileFilter.java+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++FileFilterImp.java

Demo01FileFilter.java

例子优化1:

//使用匿名内部类

public classDemo01FileFilter {public static voidmain(String[] args) {

File file= new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo29");

ergodic2(

file,newFileFilter() {

@Overridepublic booleanaccept(File pathname) {if(pathname.isDirectory()) {return true;

}return pathname.getName().endsWith(".java");

}

}

);

}

}

控制台输出

FileFilterImp.java

Demo01FileFilter.java

例子优化2:

importjava.io.File;//由于FileFilter接口中只有一个抽象方法,所以可以使用Lambda表达式简化//接口实现类,这样也可以不用定义接口实现类,而且比匿名内部类更简洁

public classDemo02FileFilter {public static voidmain(String[] args) {

File file= new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo29");

ergodic(file);

}public static voidergodic(File file) {if(file.exists()) {

File[] files=file.listFiles(

(File pathname)-> {return pathname.getName().endsWith(".java") || newFile(String.valueOf(pathname)).isDirectory();}

);assert files != null;for(File f : files) {if(f.isDirectory()) {

ergodic(f);

}else{

System.out.println(f.getName());

}

}

}else{if(file.isFile()) {

System.out.println("不存在该文件");

}else{

System.out.println("不存在该目录");

}

}

}

}

控制台输出

FileFilterImp.java

Demo02FileFilter.java

Demo01FileFilter.java

其中优化2中还可以进一步优化(对lambda表达式进行优化)

importjava.io.File;public classDemo03FileFilter {public static voidmain(String[] args) {

File file= new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo29");

ergodic(file);

}public static voidergodic(File file) {if(file.exists()) {

File[] files=file.listFiles(

pathname-> pathname.getName().endsWith(".java") || newFile(String.valueOf(pathname)).isDirectory()

);assert files != null;for(File f : files) {if(f.isDirectory()) {

ergodic(f);

}else{

System.out.println(f.getName());

}

}

}else{if(file.isFile()) {

System.out.println("不存在该文件");

}else{

System.out.println("不存在该目录");

}

}

}

}

控制台输出

FileFilterImp.java

Demo02FileFilter.java

Demo03FileFilter.java

Demo01FileFilter.java

java 过滤器 过滤文件中的文件_Java 使用FileFilter过滤器对文件进行搜索相关推荐

  1. linux java excel文件_使用Java语言将excel中读取到的内容导入Linux的文件中

    一.maven配置 导入excel表格需要使用的依赖: org.apache.poi poi 4.0.0 org.apache.poi poi-ooxml 4.0.0 二.测试程序 package u ...

  2. 将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中

    package again;import java.io.*;/* 1.编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中,a.txt 文件中的单词 ...

  3. 使用Python批量实现某一Excel文件中每3行数据存一个Excel文件

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 远芳侵古道,晴翠接荒城. 大家好, ...

  4. python从文件中删除某个字符,后保存该文件

    从文件中删除某个字符,后保存该文件 原本是用vs全部替换,结果发现文件太多了,将近12000个文件,非常费时间,然后就给他写了个脚本哈哈,比较快4秒就搞定了.代码拿走直接就可以用途. #!/usr/b ...

  5. python文件中单词的删除_使用python删除文件中的多余单词

    嗨,我正在学习Python,出于好奇,我编写了一个程序来删除文件中多余的单词. 我正在比较文件text1.txt中的测试.和'text2.txt',基于text1中的测试,我删除了test2中多余的单 ...

  6. 把一个文件中的内容,复制到另外一个文件中

    # 把一个文件中的内容,复制到另外一个文件中.# 基础目录 BASE_DIR = "E:/python重新学习/python核心编程/文件读写/" # 读取的文件名 READ_FI ...

  7. 根据条件从txt文件中挑出一些文字并据此修改文件名字

    根据条件从txt文件中挑出一些文字并据此修改文件名字 /* ****************************************************** *学习Windows API编 ...

  8. 【正则表达式高级day01】正则表达式概述+在一个文件中,查找出itcast开头的语句+在一个文件中,找到含有itcast的语句+在一个文件中,找到邮箱为163或者126的所有邮件地址

    文章目录 正则表达式概述 思考 场景1:在一个文件中,查找出itcast开头的语句 场景:在一个文件中,找到含有itcast的语句 场景:在一个文件中,找到邮箱为163或者126的所有邮件地址 正则表 ...

  9. java文件中查找字符串_Java 在本地文件中查找固定字符串

    适用范围:只适用于在文本文档中查找(如,txt.java.c等等,并不适用与doc.xls等等这些文件),可嵌套文件夹.但是对中文不支持. 例如:文件夹:F:/demo 子文件夹:F:/demo/er ...

最新文章

  1. Lync2013与Exchange2013集成先决条件(十九)
  2. jQuery版AJAX简易封装
  3. Ask Me Anything #1 我是新晋CNCF TOC张磊,你有什么想问我的?
  4. 修改Sublime Text3 的侧边栏字体大小
  5. 专访OPPO Find X5产品经理:深耕自研芯片 以最高标准打造极致旗舰体验
  6. 科大讯飞2017年报:营收54亿利润5.9亿,政府补助1.18亿
  7. DBA_实践指南系列7_Oracle Erp R12监控OAM(案例)
  8. 计算机桌面屏保字幕设置,win7系统屏保设置成字幕保护的操作方法
  9. WPF 入门教程 TextBox详解
  10. 集成电路哪家强?现在就为你透彻分析!
  11. JanusGraph概述
  12. 项目实训——语音转文字功能
  13. matlab 系统找不到指定路径
  14. java itextPdf导出pdf
  15. SOA RPC SOAP REST
  16. neon 指令 c语言,NEON初步使用
  17. Oracle存储过程取当天为当年的第几周(自然周),以及当年总周数
  18. 全国计算机等级考试.pdf,全国计算机等级考试试题49662.pdf
  19. AcWing 844. 走迷宫
  20. 相控阵天线(四):阵列天线波束赋形(遗传算法、粒子群算法、进化差分算法、含python代码)

热门文章

  1. autojs调用java识字_autojs实现抽象类的继承
  2. java中Comparable实现对象的比较
  3. RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip arc
  4. xpwifi热点设置android,教你在XP电脑中开启设置WiFi热点使用的步骤
  5. android键盘移动光标,在Android键盘上完成键
  6. HTML音乐播放没声音,网页没有声音但系统显示有声音怎么回事?如何解决?
  7. openssl 生成证书_CentOS7 httpd(Apache)SSL 证书部署
  8. 对于半圆形的点击区域该怎么做_十堰混合型塑胶跑道怎么选,橡胶跑道卷材型号...
  9. mybatis mysql selectkey_Mybatis示例之SelectKey的应用
  10. window.open不重复打开同一个名称的窗口_干货满满|Ctrl键的正确打开方式