文件过滤器Filter

用处

创建过滤规则, 用于过滤掉不需要的文件

将过滤规则和程序分开,提高过滤规则代码的复用性,增加了可移植性,提高效率、简化代码开发

使用

  1. 创建FileFilter接口的实现类,并实现其accept(File pathname)方法,此方法中写过滤规则: 如果想保留该文件,则返回true,如果不需要,则返回false;
  2. 创建该实现类的对象1
  3. 调用file的listFIles方法,并传入对象1,返回file下符合过滤规则的file数组a

file.listFiles()方法

package com.recurrence;

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

public class DemoPrintAllFile {
    public static void main(String[] args) {
        File file = new File("src\\com");
        printAllFile(file);
    }

    /*
        文件过滤器FileFilter
        采用递归方法遍历打印路径下所有文件
    */
    public static void printAllFile(File file){
        if(file != null) {
            File[] directory = file.listFiles(new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    return pathname.isDirectory() || pathname.getName().equals("i.txt");    //是文件夹或i.txt才保留在directory文件数组中
                }
            });
            for (File f : directory) {
                if(f.isDirectory())
                    printAllFile(f);        //使用过滤器
                else
                    System.out.println(f.toString());
            }

           /* for (File file1 : directory) {
                if (file1.isFile()) {           //不使用过滤器,
                    if(file1.getName().equals("i.txt"))
                        System.out.println(file1);
                } else {
                    printAllFile(file1);
                }
            }*/
        }
    }
}

做了几件事:

  1. 对构造方法中传递的目录进行遍历,获取目录中的每一个文件/文件夹 ---->封装为file对象
  2. 调用参数传递中的过滤器fileFilter的accept方法
  3. 把遍历到的每一个对象传递给方法accept的参数pathname
  4. accept如果返回的是true,则把传递过去的file对象存到file数组a中,如果返回的是false,则不把该对象存到file数组a中。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值