Filter类相关笔记

package mydemo.day8.demo03Filter;

import java.io.File;

/*
需求:
遍历E:\Java-learn\JavaSeniorCode1\day8-FileAndRecursion\src\mydemo\day8文件夹,及day8文件夹的子文件夹
只要.txt结尾的文件
我们可以使用过滤器来实现
在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器
File[] listFiles(FileFilter filter)
java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器。
作用:用来过滤文件(File对象)
抽象方法:用来过滤文件的方法
boolean accept(File pathname) 测试指定抽象路径名是否应该包含在某个路径名列表中。
参数:
File pathname:使用ListFiles方法遍历目录,得到的每一个文件对象
File[] listFiles(FilenameFilter filter)
java.io.FilenameFilter接口:实现此接口的类实例可用于过滤器文件名。
作用:用于过滤文件名称
抽象方法:用来过滤文件的方法
boolean accept(File dir, String name) 测试指定文件是否应该包含在某一文件列表中。
参数:
File dir:构造方法中传递的被遍历的目录
String name:使用ListFiles方法遍历目录,获取的每一个文件/文件夹的名称
注意:
两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤的方法accept,在方法中自己定义过滤的规则
/
public class Demo01Filter {
public static void main(String[] args) {
File file = new File(“E:\Java-learn\JavaSeniorCode1\day8-FileAndRecursion\src\mydemo\day8”);
getAllFiles(file);
}
/

定义一个方法,参数传递File类型的目录
方法中对目录进行遍历
*/
private static void getAllFiles(File dir) {
File[] files = dir.listFiles(new FileFilterImpl());
for (File file : files) {
//对遍历得到的File对象f进行判断,判断是否是文件夹
if (file.isDirectory()) {
//file是一个文件夹,则继续遍历这个文件夹
//我们发现getAllFile方法就是传递文件夹,遍历文件夹的方法
//所以直接调用getAllFile方法即可:递归(自己调用自己)
getAllFiles(file);
} else {
System.out.println(file);
}
}

}

}
package mydemo.day8.demo03Filter;

import java.io.File;

/*
Demo01Filter程序用Lambda优化
/
public class Demo02Filter {
public static void main(String[] args) {
File file = new File(“E:\Java-learn\JavaSeniorCode1\day8-FileAndRecursion\src\mydemo\day8”);
getAllFiles(file);
}
/

定义一个方法,参数传递File类型的目录
方法中对目录进行遍历
*/
private static void getAllFiles(File dir) {
File[] files = dir.listFiles((File pathname) ->{
if(pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".txt");
});
for (File file : files) {
//对遍历得到的File对象f进行判断,判断是否是文件夹
if (file.isDirectory()) {
//file是一个文件夹,则继续遍历这个文件夹
//我们发现getAllFile方法就是传递文件夹,遍历文件夹的方法
//所以直接调用getAllFile方法即可:递归(自己调用自己)
getAllFiles(file);
} else {
System.out.println(file);
}
}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值