使用正则表达式过滤目录中文件名称,File和FilenameFilter的应用

用DirFilter 实现FilenameFilter,能够通过正则表达式过滤目录中的文件名称;

也可以用其他方式实现其他的过滤,类似于过滤大小、类型等!

class DirFilter implements FilenameFilter{

 

    private Pattern pattern;

    public DirFilter(String regex) {

        pattern = Pattern.compile(regex);

    }

    @Override

    public boolean accept(File dir, String name) {

        return pattern.matcher(name).matches();

    }

}

 

 

 

  • 获取全部文件:

正则表达式为:"[\\s\\S]*"表示任意长度的字符:

    @Test

    public void DirFileter(){

        File path = new File(".");

        String[] list;

        list = path.list(new DirFilter("[\\s\\S]*"));

        //list = path.list(); //不用正则表达式的方式获取

        Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);

        for(String dirItem : list){

            System.out.println(dirItem);

        }

    }

结果:

  • 获取特定文件:正则表达式:"[a-z]*"

 

    @Test

    public void DirFileter2(){

        File path = new File(".");

        String[] list;

        list = path.list(new DirFilter("[a-z]*"));

        Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);

        for(String dirItem : list){

            System.out.println(dirItem);

        }

    }

 

结果:获取所有名称小写英文字母的文件

posted @ 2019-11-16 16:33  五星上酱程序员  阅读(1961)  评论(0编辑  收藏  举报