15.1.2 文件过滤器
15.1.2 文件过滤器
File类中使用到FilenameFilter接口的方法
方法 | 描述 |
---|---|
String[] list(FilenameFilter filter) |
Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter. |
File[] listFiles(FilenameFilter filter) |
Returns an array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter. |
在File
类的list()
方法中可以接收一个FilenameFilter
参数,通过该参数可以只列出符合条件的文件。
这里的FilenameFilter
接口和javax.swing.filechooser
包下的FileFilter
抽象类的功能非常相似,可以把FileFilter
当成FilenameFilter
的实现类,但可能Sun
在设计它们时产生了一些小小遗漏,所以没有让FileFilter
实现FilenameFilter
接口。
FilenameFilter接口方法
FilenameFilter
接口里包含了一个accept
方法:
FilenameFilter 接口方法 |
描述 |
---|---|
boolean accept(File dir, String name) |
Tests if a specified file should be included in a file list. |
accept
方法将依次对指定File
的所有子目录或者文件进行迭代,如果该子目录或者文件经过accept
方法处理后返回true
,则list()
方法会列出该子目录或者文件。
FilenameFilter接口是函数式接口
FilenameFilter
接口内只有一个抽象方法,因此该接口也是一个函数式接口,可使用Lambda
表达式创建实现该接口的对象
程序示例
1 | import java.io.*; |
上面程序中通过实现accept()
方法,来指定哪些文件应该由list()
方法列出。
运行上面程序,将看到当前路径下所有的.java
文件以及文件夹被列出。
FileFilter接口和FilenameFilter接口的异同
相同点
都用于过滤文件,都只有一个方法,都是函数式接口
方法的参数列表不同
FilenameFilter 接口方法 |
描述 |
---|---|
boolean accept(File dir, String name) |
Tests if a specified file should be included in a file list. |
FileFilter 接口方法 |
描述 |
---|---|
boolean accept(File pathname) |
Tests whether or not the specified abstract pathname should be included in a pathname list. |
范围不同
File
类对象使用FilenameFilter
既可以过滤得到字符串数组,也可以得到File
数组
方法 | 描述 |
---|---|
String[] list(FilenameFilter filter) |
Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter. |
File[] listFiles(FilenameFilter filter) |
Returns an array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter. |
File
类对象使用FileFilter
只能得到File
数组
方法 | 描述 |
---|---|
File[] listFiles(FileFilter filter) |
Returns an array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter. |
所以FilenameFileter
范围比较广一下