public File[] listFiles()
:返回一个File数组 表示该File目录中的所有的子文件或目录
listFiles()方法可传入两种参数实现文件的过滤
listFiles(FileFilter filter)
和listFiles(FilenameFilter filter)
1、FileFilter文件过滤器
java.io.FileFilter
接口:用于抽象路径名(File对象)的过滤器
作用:用于过滤File文件
接口里唯一的抽象方法:boolean accept(File pathname)
:测试pathname是否应该包含在当前File目录中 若符合则返回true
参数:使用ListFiles方法遍历目录后 得到的每一个文件对象
注:这两个过滤器接口没有实现类
须自己写实现类 然后重写过滤的方法(accept()) 在方法中自己定义过滤的规则
- 1、listFiles()方法会对构造方法中传递的目录进行遍历
并获取目录中的每一个文件或文件夹 然后封装成File对象 - 2、listFiles()方法会调用传递进来的过滤器中的accept()方法
- 3、listFiles()方法会将遍历得到的每一个File对象传递给accept()方法的pathname参数
accept()方法返回的是一个布尔值:
- true:将传递过去的File对象保存到File数组中(放行)
- false:不将传递过去的File对象保存到File数组中
案例:遍历指定路径下所有.java结尾的文件
FileFilter过滤器类:
public class FileFilterImpl implements FileFilter
{
@Override
public boolean accept(File pathname) {
if (pathname.getName().toLowerCase().endsWith(".java"))
{
return true;
}
// 若pathname是文件夹 则返回true 继续遍历这个文件夹
return pathname.isDirectory();
}
}
主类:
public static void main(String[] args) {
// 给出路径
File file=new File("F:\\IdeaProjects\\filetest");
getAllFile(file);
}
// 定义一个方法 参数传递File类型的目录 方法中对目录进行遍历
private static void getAllFile(File dir)
{
File[] files = dir.listFiles(new FileFilterImpl())