本文将通过正则表达式来过滤文件夹中的某些特殊文件,并打印出来。这其中涉及到文件过滤器,其中应用到了匿名类。
package date0815.demo1;
/**
* Java匿名内部类
* @author zzw
*
*/
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;
public class Test1 {
public static FilenameFilter filter(final String regex) {
//匿名类,直接用匿名类来返回一个FilenameFilter类的对象
return new FilenameFilter() {
//对正则表达式进行编译
private Pattern pattern = Pattern.compile(regex);
//覆写FilenameFilter接口中的唯一的accept方法
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
};
}
public static void main(String[] args) {
//新建一个文件
File file = new File(".");
//返回过滤后的文件列表,使用正则表达式过滤以.html结尾的所有文件
String[] fileList = file.list(filter(".*\\.html"));
//对字符串进行不区分大小写的排序
Arrays.sort(fileList, String.CASE_INSENSITIVE_ORDER);
//打印文件名
for(String str:fileList) {
System.out.println(str);
}
}
}