在上一篇File文件搜索中,需要过滤掉一些文件,我们还可以用第二种方式来实现。
File对象中的listFiles()方法,可以传递一个FileFilter的实现类(需要我们创建过滤器FileFilter的实现类,重写过滤方法accept,定义过滤规则),以此来达到过滤的目的。
listFiles()一共做了三件事情:
1.listFiles方法会对构造方法中传递的目录进行遍历,获取目录中的每一个文件/文件夹-->封装为File对象;
2.listFiles方法会调用参数传递的过滤器中的方法accept();
3.listFiles方法会把遍历得到的每一个File对象,传递给accept方法的参数pathname。
accept方法返回值是一个布尔值。
true:就会把传递过去的File对象保存到File数组中
false:就不会把传递过去的File对象保存到File数组中
重写过滤方法accept,定义过滤规则:
判断File对象是否以我们需要过滤文件的格式结尾,如:".java";
是就返回true
不是就返回false
public class Demo01Filter
{
public static void main(String[] args)
{
File file = new File("G:\龙胆紫");
getAllFile(file);
}
//获取当前目录下,所有指定格式的文件
public static void getAllFile(File dir){
File[] files = dir.listFiles(new FileFilterImpl());//传入FileFilter的实现类
for (File file : files)
{
//判断是否为文件夹
if (file.isDirectory()){
getAllFile(file);
}else {
System.out.println(file);
}
}
}
}
public class FileFilterImpl implements FileFilter
{
public boolean accept(File pathname)
{
//如果是文件夹,返回true,继续遍历这个文件夹
if (pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".java");
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)