先上代码:
package demo1;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
//文件夹操作
public class MyFile2 {
public static void main(String[] args) {
File file = new File("F:/myFiletest/text3");
String[] names = file.list(new MyFile2().new MyFileNameFilter()); //内部类
for (String string : names) {
System.out.println(string);
}
}
// 文件过滤器实现类
class MyFileNameFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java") || name.endsWith(".py");
}
}
}
分析:
1.文件对象file的list()方法可以传递一个文件过滤的对象,我定义了一个简单的内部类来实现FilenameFilter ,即文件过滤对象传递给它,可以实现对指定目录下的文件进行过滤。
2.FilenameFilter 是文件过滤的接口,它有一个必须实现的方法:accept方法,该方法实现文件过滤的规则书写。它的两个形参:dir:文件目录,即要被过滤的目录对象 ;name:文件名称。其实这里,我们可以直接用这个类的对象调用这个方法传递dir即可,但是这样又显得耦合过高。