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

Posted daguozb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用正则表达式过滤目录中文件名称,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);

        }

    }

 

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

技术图片

以上是关于使用正则表达式过滤目录中文件名称,File和FilenameFilter的应用的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令过滤文本 grep

[Linux 006]——grep和正则表达式

awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串

bash 中的正则表达式量词——简单与扩展匹配 n 次

Grep家族和正则表达式详解

用Java正则表达式来过滤Excle格式。比如Excle文件格式有.xlsx”和.xls两种。那么正则表达式怎么写呢。