列出.java后缀的文件
public class Main {
public static void main(String[] args) {
File path = new File(".");
String[] list;
if(args.length == 0){
list = path.list();
}else {
list = path.list(new DirFilter(args[0]));
}
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list){
System.out.println(dirItem);
}
}
}
class DirFilter implements FilenameFilter{
private Pattern pattern;
public DirFilter(String regex){
pattern = Pattern.compile(regex);
}
public boolean accept(File dir, String name){
return pattern.matcher(name).matches();
}
}
DirFilter实现了FilenameFilter接口,list()可以回调accept(),去决定哪些文件包含在列表中
利用内部类
class DirFilter2 {
public static FilenameFilter filter(final String regex){
return new FilenameFilter() {
private Pattern pattern = Pattern.compile(regex);
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
};
}
}
public class Main {
public static void main(String[] args) {
File path = new File(".");
String[] list ;
if(args.length == 0){
list = path.list();
}else {
list = path.list(DirFilter2.filter(args[0]));
}
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list){
System.out.println(dirItem);
}
}
}
注意,向内部类传递参数时,必须为final修饰