FilenameFilter接口存在的唯一原因就是過(guò)濾文件列表中的文件名,在調(diào)用path.list()方法中傳入FilenameFilter的實(shí)現(xiàn)類即可看铆。重要的是重寫accept方法,方法返回true會(huì)被添加列表中氮兵,否則會(huì)被篩掉
篩選文件夾內(nèi)以java結(jié)尾的文件名
public class FilenameFilterTest {
public static void main(String[] args) {
File path = new File("./src/test_12");
String[] list = path.list(new Filter("\\S+java"));
for (String s : list) {
System.out.println(s);
}
}
}
class Filter implements FilenameFilter {
private Pattern pattern;
public Filter(String regex) {
this.pattern = Pattern.compile(regex);
}
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();//根據(jù)傳入的正則表達(dá)式判斷是否存在文件名
}
}
用lambda表達(dá)式可以簡(jiǎn)寫成如下形式
public class FilenameFilterTest {
public static void main(String[] args) {
File path = new File("./src/test_12");
String regex = "\\S+java";
String[] list = path.list((File dir, String name)-> Pattern.compile(regex).matcher(name).matches());
for (String s : list) {
System.out.println(s);
}
}
}