FileFilter与FilenameFilter的使用

传统方式

package fileFilter;

import java.io.File;

/**
 * 找出d盘中以.zip结尾的文件
 */
public class FileFilterDemo1 {
    public static void main(String[] args) {
        //对D盘进行遍历得到所有的子目录或文件
        File file=new File("d:"+ File.separator);

        File[] files = file.listFiles();

        //对得到的数组进行遍历并筛选
        for(File f:files){
            if(f.isFile()){
                //是否以.zip结尾
                if(f.getName().endsWith( ".zip" )){
                    System.out.println(f);
                }
            }
        }

    }
}

使用FileFilter

package fileFilter;

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

/**
 * 找出d盘中以.zip结尾的文件
 */
public class FileFilterDemo2 {
    public static void main(String[] args) {
        //对D盘进行遍历得到所有的子目录或文件
        File file=new File("d:"+ File.separator);
        /**
         * 使用FileFilter过滤器在遍历过程中直接过滤,得到过滤后的File[]
         */
        File[] files=file.listFiles( new FileFilter() {
            @Override
            public boolean accept(File file) {
                //以.zip结尾的文件
                return file.isFile()&&file.getName().endsWith( ".zip" );
            }
        } );
        for (File f : files) {
            System.out.println(f);
        }
    }
}

使用FilenameFilter

package fileFilter;

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

/**
 * 找出d盘中以.zip结尾的文件
 */
public class FileFilterDemo3 {
    public static void main(String[] args) {
        //对D盘进行遍历得到所有的子目录或文件
        File file=new File("d:"+ File.separator);
        /**
         * 使用FileNameFilter:文件名称过滤器
         */
        File[] files=file.listFiles( new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                //dir:父目录 name:遍历到的文件名
                File dest=new File( dir,name );
                return dest.isFile()&&name.endsWith( ".zip" );
            }
        } );
        for (File f : files) {
            System.out.println(f);
        }
    }
}

你可能感兴趣的:(FileFilter与FilenameFilter的使用)