美文网首页
FilenameFilter接口 --文件过滤

FilenameFilter接口 --文件过滤

作者: Alex_1799 | 来源:发表于2018-06-13 15:57 被阅读0次
import java.io.File;
import java.io.FilenameFilter;


public class A {

    public static void main(String[] args) {
         File file = new File("E:/workspace/aaa/src");

         File[] listFiles = file.listFiles(new MyFileter());

         for(File f : listFiles){
             System.out.println(f.getName());
         }
    }

    static class MyFileter implements FilenameFilter {

        @Override
        public boolean accept(File file, String filename) {
            if (filename != null && filename.toLowerCase().endsWith(".java")) {
                return true;
            } else {
                return false;
            }
        }

    }
}

[JavaSE8基础 File FilenameFilter 筛选出指定后缀名的文件]

package jizuiku0;
 
import java.io.File;
import java.io.FilenameFilter;
 
/*
 * @version V17.09
 */
public class Filter {
    public static void main(String[] args) {
 
        // 找到E:\迅雷下载\下载合集中文件名以.xlsx结尾的文件
        String pathname = "E:\\迅雷下载\\下载合集";
        File file = new File(pathname);
 
        // 因为这里只筛选文件的名字,所以使用FilenameFilter接口
        // 使用匿名类
        // filesName中都是符合条件的文件的名字
        String[] filesName = file.list(new FilenameFilter() {
 
            // 这个函数是用来判断的
            @Override
            public boolean accept(File dir, String name) {
                // TODO Auto-generated method stub
                // dir -> E:\迅雷下载\下载合集
                // name -> dir下 文件夹和文件的名字
                System.out.println(dir + "---" + name);
 
                // 是文件 并且 文件名以.xlsx结尾
                return new File(dir, name).isFile() && name.endsWith(".xlsx");
            }
        });// 这里的分号容易被忘记
 
        System.out.println("\n以.xlsx结尾的文件:");
        // 遍历
        for (String name : filesName) {
            System.out.println(name);
        }
    }
}
image.png

list()方法源码

public String[] list(FilenameFilter filter) {
    String names[] = list();
    if ((names == null) || (filter == null)) {
        return names;
    }
    List<String> v = new ArrayList<>();
    for (int i = 0 ; i < names.length ; i++) {
        if (filter.accept(this, names[i])) {
            v.add(names[i]);
        }
    }
    return v.toArray(new String[v.size()]);
}

相关文章

网友评论

      本文标题:FilenameFilter接口 --文件过滤

      本文链接:https://www.haomeiwen.com/subject/xsgjeftx.html