IO流02_文件过滤器

【简述】

在File类的list方法中可以接收一个FilenameFilter参数,通过该参数可以列出只满足要求的文件。

FilenameFilter接口里包含了一个accept(File dir, String name)方法,该方法会依次对指定的File的所有子目录或者文件进行迭代,如果该方法返回true,则list()方法会列出该子目录或文件。

File类中的使用过滤器的list方法

FilenameFilter接口内的accept(File dir,String name)方法

 

 【案例】

package com.Higgin.part1;

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

/**
 * FilenameFilter接口的实现类
 * 在accept方法内添加文件名的过滤器条件
 */
class FilterName implements FilenameFilter{
    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(".txt");
    }
}
/**
 * 文件名过滤
 */
public class FilenameFilterDemo {
    public static void main(String[] args) {
        File file=new File("c://testJavaIO");
        System.out.println("===============使用lambda表达式获取后缀为.java的文件=================");
        //使用lambda表达式,获得后缀是.java的文件
        String[] nameList=file.list((div,name)->name.endsWith(".java"));  //极大简化了代码
        for(String fileName:nameList){
            System.out.println(fileName);
        }
        
        System.out.println("===============使用lambda表达式获取后缀为.txt的文件=================");
        //不使用lambda表达式获取后缀为.txt的文件
        String[] nameList2=file.list(new FilterName()); //直接使用FileNameFilter的实现类FilterName
        for(String fileName:nameList2){
            System.out.println(fileName);
        }
    }
}

【对应的文件夹内的内容】

【运行结果】

 【小结】

上面的两个方法都实现了accept()方法,实现accept()方法起始就是实现自己的过滤规则,指定那些文件应该由list方法来列出。

FilenameFilter接口内只有一个抽象方法,因此该方法是一个函数式接口,可以使用lambda表达式创建实现该接口。

原文地址:https://www.cnblogs.com/HigginCui/p/5923892.html