package file_filter;
import java.io.File;
import java.io.FilenameFilter;
public class FileExtensionFilter implements FilenameFilter {
private String extension = null;
public FileExtensionFilter(String extension){
this.extension = "."+extension.toLowerCase();
}
public boolean accept(File arg0, String arg1) {
File temp = new File(arg0,arg1);
if(temp.getName().toLowerCase().endsWith(extension)){
return true;
}
return false;
}
public static void main(String []args){
File currentDirection = new File(".");
FileExtensionFilter javaFilter = new FileExtensionFilter("java");
String [] javaFiles = currentDirection.list(javaFilter);
for(int i=0; i<javaFiles.length; i++){
System.out.println(javaFiles[i]);
System.out.println(2);
}
}
}
public interface FilenameFilter {
boolean accept(文件目录, 字串名);
}
它指出这种类型的所有对象都提供了一个名为accept()的方法。之所以要创建这样的一个类,背后的全部原因就是把accept()方法提供给 list()方法,使list()能够“回调”accept(),从而判断应将哪些文件名包括到列表中。因此,通常将这种技术称为“回调”,有时也称为 “算子”。由于list()采用一个FilenameFilter对象作为自己的自变量使用,所以我们能传递实现了FilenameFilter的任何类的一个对象,用它决定(甚至在运行期)list()方法的行为方式。回调的目的是在代码的行为上提供更大的灵活性