Java的File过滤器(FileFilter和FilenameFilter)

本文详细介绍了Java的FileFilter和FilenameFilter接口在文件过滤中的使用。通过这两个接口,可以实现对指定目录下特定后缀的文件进行筛选。以遍历并找出.java文件为例,展示了如何创建自定义过滤器,包括使用匿名内部类和Lambda表达式的简化实现方式。
摘要由CSDN通过智能技术生成

public File[] listFiles() :返回一个File数组 表示该File目录中的所有的子文件或目录

listFiles()方法可传入两种参数实现文件的过滤
listFiles(FileFilter filter)listFiles(FilenameFilter filter)

1、FileFilter文件过滤器

java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器
作用:用于过滤File文件
接口里唯一的抽象方法:boolean accept(File pathname) :测试pathname是否应该包含在当前File目录中 若符合则返回true
参数:使用ListFiles方法遍历目录后 得到的每一个文件对象

注:这两个过滤器接口没有实现类
须自己写实现类 然后重写过滤的方法(accept()) 在方法中自己定义过滤的规则

  • 1、listFiles()方法会对构造方法中传递的目录进行遍历
    并获取目录中的每一个文件或文件夹 然后封装成File对象
  • 2、listFiles()方法会调用传递进来的过滤器中的accept()方法
  • 3、listFiles()方法会将遍历得到的每一个File对象传递给accept()方法的pathname参数

accept()方法返回的是一个布尔值:

  • true:将传递过去的File对象保存到File数组中(放行)
  • false:不将传递过去的File对象保存到File数组中

案例:遍历指定路径下所有.java结尾的文件

FileFilter过滤器类:

public class FileFilterImpl implements FileFilter
{
   
    @Override
    public boolean accept(File pathname) {
   
        if (pathname.getName().toLowerCase().endsWith(".java"))
        {
   
            return true;
        }
        // 若pathname是文件夹 则返回true 继续遍历这个文件夹
        return pathname.isDirectory();
    }
}

主类:

public static void main(String[] args) {
   
	// 给出路径
	File file=new File("F:\\IdeaProjects\\filetest");
    getAllFile(file);
}

// 定义一个方法 参数传递File类型的目录 方法中对目录进行遍历
private static void getAllFile(File dir)
{
   
    File[] files = dir.listFiles(new FileFilterImpl())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值