首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java中FileFliter过滤器

Java中FileFliter过滤器

作者头像
訾博ZiBo
发布2025-01-06 14:07:34
发布2025-01-06 14:07:34
3960
举报

一、文件过滤器的原理和使用

1、File[] listFiles(FileFilter filter)

java.io 接口 FileFilter:

用于抽象路径名(File对象)的过滤器;

作用:

用来过滤文件(File对象);

抽象方法:

boolean accept(File pathname)测试指定抽象路径名是否应该包含在某个路径名列表中;

抽象方法的参数说明:

File pathname就是使用listFiles方法遍历目录得到的每一个文件对象;

2、File[] listFiles(FilenameFilter filter)

java.io 接口 FilenameFilter:

实现此接口的类实例可用于过滤器文件名;

作用:

用于过滤文件名称;

抽象方法:

boolean accept(File dir, String name) 测试指定文件是否应该包含在某一文件列表中;

抽象方法参数:

File dir:构造方法中传递被遍历的目录;

String name:使用listFiles方法遍历目录,获取的每一个文件/目录的名称;

注意:

两个过滤器都没有实现类,需要我们自己写实现类,重写过滤器方法accept,在方法中自己定义过滤的规则;

二、原理

三、代码演示

1、FileFilterImpl

代码语言:javascript
复制
package study.filefliter;

import java.io.File;
import java.io.FileFilter;

public class FileFilterImpl implements FileFilter {
    @Override
    public boolean accept(File pathname) {
        //这个地方如果返回false,就不会保存到文件数组中
        //定义规则,只返回目录和目录中的.java文件
        if (pathname.isDirectory()){
            return true;
        }
        return pathname.getName().endsWith(".java");
    }
}

2、Test

代码语言:javascript
复制
package study.filefliter;

import java.io.File;

public class Test {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\Administrator\\Desktop\\a");
        getFileName(file);

    }
    private static void getFileName(File file){
        if(file.exists()){
            if(file.isDirectory()){
                System.out.println("File目录名称为"+file.getName());
                File[] files = file.listFiles(new FileFilterImpl());
                assert files != null;
                for (File file1 : files) {
                    getFileName(file1);
                }
            }else if(file.isFile()){
                System.out.println("File文件名称为"+file.getName());
            }
        }
    }
}

四、FilenameFilter的使用

1、备注:

在此使用匿名内部类的方式演示FilenameFilter,而实际上FileFilter也可以使用此方式;

2、代码演示

修改后的Test类:
代码语言:javascript
复制
package study.filefliter;

import java.io.File;
import java.io.FilenameFilter;

public class TestFilenameFilter {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\Administrator\\Desktop\\a");
        getFileName(file);

    }
    private static void getFileName(File file){
        if(file.exists()){
            if(file.isDirectory()){
                System.out.println("File目录名称为"+file.getName());
                File[] files = file.listFiles((dir, name) -> new File(dir,name).isDirectory() || name.endsWith(".java"));
                assert files != null;
                for (File file1 : files) {
                    getFileName(file1);
                }
            }else if(file.isFile()){
                System.out.println("File文件名称为"+file.getName());
            }
        }
    }
}
运行结果(跟Test一样):
代码语言:javascript
复制
File目录名称为a
File目录名称为a
File文件名称为a.java
File文件名称为a.java
File目录名称为b
File目录名称为c
File文件名称为a.java
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、文件过滤器的原理和使用
    • 1、File[] listFiles(FileFilter filter)
      • java.io 接口 FileFilter:
      • 作用:
      • 抽象方法:
      • 抽象方法的参数说明:
    • 2、File[] listFiles(FilenameFilter filter)
      • java.io 接口 FilenameFilter:
      • 作用:
      • 抽象方法:
      • 抽象方法参数:
      • 注意:
  • 二、原理
  • 三、代码演示
    • 1、FileFilterImpl
    • 2、Test
  • 四、FilenameFilter的使用
    • 1、备注:
    • 2、代码演示
      • 修改后的Test类:
      • 运行结果(跟Test一样):
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档