0 引言
在学习流和文件时发现文件的过滤器只写出了一种实现方式,即匿名类的实现。也可以通过实现FileNameFilter接口的方式完成过滤,特此以作记录。
1 实例代码
1.1 匿名类的实现
package com.dh.ch08;/*
@author cll
@date 2018-11-04-10:59
*/
import java.io.File;
import java.io.FilenameFilter;
public class FileListFilter {
//main
public static void main(String []args){
FilenameFilter filter = new FileFilterDemo();
//file
File file = new File("E:/cll_workspace/python_ai/");
if(file.exists() && file.isDirectory()){
String[] FileNames = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
System.out.println("dir"+dir+",name"+name);
return (name.endsWith("py"));
}
});
for(String str:FileNames){
System.out.println("name:" +str);
}
}
}
}
1.2 接口实现方式
1.2.1 接口实现实例代码
类名为FileFilterDemo
package com.dh.ch08;/*
@author cll
@date 2018-11-04-11:04
*/
import java.io.File;
import java.io.FilenameFilter;
public class FileFilterDemo implements FilenameFilter {
public boolean accept(File file, String name){
return (name.endsWith("py"));
}
}
1.2.2 调用过滤器
package com.dh.ch08;/*
@author cll
@date 2018-11-04-10:59
*/
import java.io.File;
import java.io.FilenameFilter;
public class FileListFilter {
//main
public static void main(String []args){
FilenameFilter filter = new FileFilterDemo();
//file
File file = new File("E:/cll_workspace/python_ai/");
if(file.exists() && file.isDirectory()){
String[] FileNames = file.list(filter);
for(String str:FileNames){
System.out.println("name:" +str);
}
}
}
}
2 总结
接口的实现方式,先声明一个接口类型的变量,然后将实现该接口的类对象,将其作为引用赋值传给变量。
String [] list(FileNameFilter filter)中传入的参数是FileNameFilter的实例对象;