接口 FileFilter

简要谈谈io中抽象类FileFilter的用法

FileFilter是jdk1.2版本新加入的接口。在java.io包中,是实现文件过滤功能的一个接口。
那这个接口怎么用呢?,File类对象的方法.listFiles(),有一个重写方法listFiles(FileFilter filter) 。查阅Java的api,并没有找到此接口的实现类。所以我们手写一个实现类,然后根据实现类多态调用,创造出接口实现类的对象。接口中有一个抽象方法accept(File pathname)返回值是Boolean类型,这个方法是什么意思呢·?他是测试指定抽象路径名是否应该包含在某个路径名列表中(api中的解释)。这个解释对于新人很不友好,所以用我们的白话就是listFiles方法每次获得的一个完全路径,都传给pashname,然后有这个方法看看要不要过滤掉,不过滤就返回true,过滤就返回false。举个例子public boolean accept(File pathname) { //pathname是listfile拿到的每一条路径 if (pathname.isDirectory()) return true; return pathname.getName().endsWith(".java"); 如果根据pathname得的是文件夹,就返回真,说明文件夹可以。如果是以.java 结尾的字符串也行。我把前面调用这个对象的代码也贴上

/*

  • 递归遍历Workspace全部的.java结尾文件
    */
    import java.io.File;

public class DiGuiText {
public static void main(String[] args) {
File file = new File(“E:\javaWorkSpace”);
function(file);
}

public static void function(File file) {
	File[] filearr = file.listFiles(new FilterDemo());//此行调用了FileDFilter接口实现类的匿名对象
	for (File f : filearr) {
		if (f.isDirectory()) {
			function(f);
		} else
			System.out.println(f);
	}
}

}`
其中,我把实现接口的类叫 FilterDemo,这两个类实现的功能就是用递归遍历E盘下面的文件夹,.java结尾的文件都找出来。(初写博客,临博涕流,不知所云。溜之溜之~)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值