在遍历目录时,我们可以根据自己的需求,只获取满足条件的文件。这里就用到了文件过滤器FileLilter。
File类的一个重要的方法
(File[] listFiles(FileFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
方法传递的参数就是一个文件过滤器的实现类
自定义接口的实现类,重写接口的抽象方法accpet()
boolean accept(File pathname)
测试指定抽象路径名是否应该包含在某个路径名列表中。
案例中可能用到的两个方法
(1)startWith("") 判断文件的开头是否以指定字符串开始
(1)endsWith("") 判断文件的结尾是否为指定字符串
package cn.itcast.demo02;
import java.io.File;
import java.io.FileFilter;
/*
* 自定义过滤器,实现FileFilter接口,重写抽象方法
*/
public class MyFilter implements FileFilter{
public boolean accept(File pathname){
if(pathname.isDirectory())
return true;
String name = pathname.getName();//获取最后面即d:\eclipse\readme的readme
return name.toLowerCase().endsWith(".java");
}
}
package cn.itcast.demo02;
import java.io.File;
/*
* 目标:获取d:\\目录下的所有路径
*/
public class lianxi {
public static void main(String[] args) {
File file = new File("d:\\demo");
function(file);
}
//定义方法来递归调用
private static void function(File file) {
//定义一个容器来接收方法返回值
File[] fileArr = file.listFiles(new MyFilter());
for(File f : fileArr){
if(f.isDirectory()){
function(f);
}else{
System.out.println(f);
}
}
}
}