34 文件过滤器

2020-03-24  本文已影响0人  ca8519be679b

上节课我们做递归查找指定后缀文件时,使用的字符串方法endswith,这里研究使用文件过滤器

1

之前讲过listFiles()返回路径下面的所有文件及文件夹,这里其实还有重载方法,可以传入文件过滤器对象

FileFilter在java.io包下,是个基于扩展名过滤的接口

抽象方法abstract boolean accept(File f) 此过滤器是否接受给定的文件。

FilenameFilter在java.io包下,是个基于文件名过滤的接口

方法boolean accept(File dir,String name)测试指定文件是否应该包含在某一文件列表中。

2个过滤器都有accept方法,但是参数不一样

这2个接口都是没有实现类的,需要我们自己写实现类重写方法

这里通过设置要返回的对象集合的true,false来实现过滤

2

我们可以手写实现类,也可以直接写匿名内部类,重写accept方法,如上,对文件夹和py文件都返回True,然后分别判断

3

如上,是使用了FilenameFilter,其accept参数,dir是相对目录的File对象,后面是文件名字符串,我们可以对File(dir,name)重载构造实例,调用isDirectory,然后name单独判断即可

4

当然我们知道这个是接口,我们可以直接使用lambda表达式,满足条件是接口,且只有一个抽象方法

5

当然因为lambda表达式就一行,我们可以把参数类型省略掉,把return{}分号也都省略掉,如上

6

当然,FileFilters也可以用lambda表达式过滤,所以,因为一个参数,我们可以将参数类型和小括号拿掉

上一篇 下一篇

猜你喜欢

热点阅读