用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);

        }

    }

结果:

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

  • 获取特定文件:正则表达式:"[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的应用

相关文章:

  • 2021-06-05
  • 2022-12-23
  • 2021-10-14
  • 2022-02-14
  • 2021-10-05
  • 2021-04-24
  • 2021-12-23
猜你喜欢
  • 2022-02-16
  • 2021-10-14
  • 2021-12-10
  • 2021-06-24
  • 2021-12-13
  • 2022-02-17
  • 2021-06-06
相关资源
相似解决方案