使用正则表达式过滤目录中文件名称,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); } }
结果:获取所有名称小写英文字母的文件