File文件过滤器
概念
- 在file类中有两个和Listfiles重载的方法,方法的参数传递就是过滤器
- File[] listFiles(FileFilter filter) :(java.io.FileFilter) 是一个接口,是File的过滤器。该接口的对象可以传递给File类的listFiles(FileFilter)作为参数,接口中只有一个方法。
- File[] listFiles(FilenameFilter filter): (java.io.FilenameFilter)返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
- java.io.FileFilter接口:
- 作用:用来过滤文件(File对象)
- boolean accept(File pathname) : 测试pathname是否应该包含在当前File目录中,符合则返回true。
- java.io.FilenameFilter接口:
- 作用:用于过滤文件名
- boolean accept(File dir, String name) :测试指定文件是否应包含在文件列表中。 File dir是指构造方法中传递的被遍历的目录,String name是指使用Listfiles遍历目录得到的每一个文件和文件夹的名称
注意:
两个过滤器接口没有实现类,需要自己写,重写accept方法,在方法中自己定义过滤的规则。
代码示例:
1、FileFilter过滤器的使用
package com.io.file;
import java.io.File;
/**
* 需求:
* 遍历C:\\abc文件夹,及abc文件夹的子文件夹
* 只要.java结尾的文件
* 我们可以使用过滤器来实现
* 在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器
* File[] listFiles(FileFilter filter)
* java.io.FileFilter接口:用于抽象路径名(File对象)过滤器
* 作用:用来过滤文件(File对象)
* 抽象方法:用来过滤文件的方法
* 参数:
* File pathname:使用ListFiles方法遍历目录,得到的每一个文件对象
* File[] listFiles(FilenameFilter filter)
* java.io.FilenameFilter接口:实现此接口的类实例可用于过滤文件名。
* 作用:用来过滤文件名的方法
* 参数:
* File dir:构造方法中传递被遍历的目录
* String name:使用ListFiles方法遍历目录,获取的每一个文件/文件夹的名称
* 注意:
* 两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤的方法accept,在方法中自己定义过滤的规则
* @author ywj
*/
public class FileFilterDemo01 {
public static void main(String[] args) {
File file = new File("C:\\abc");
getAllFile(file);
}
/*
定义一个方法,参数传递File类型的目