Java IO教程 --- 文件名过滤器FileNameFilter 示例
当使用File
类listFiles()
方法时,可以实现 Java FilenameFilter 接口来过滤文件名。
Java 文件名过滤器
Java FileNameFilter接口具有boolean accept(File dir, String name)
应该实现的方法,并且每个文件都经过测试以将该方法包含在文件列表中。
从 Java 8 开始, FileNameFilter 是一个函数式接口,因为它只有一个方法。
当使用File
类listFiles()
方法时,可以实现 Java FilenameFilter 接口来过滤文件名。
Java 文件名过滤器
Java FileNameFilter接口具有boolean accept(File dir, String name)
应该实现的方法,并且每个文件都经过测试以将该方法包含在文件列表中。
00:21/03:53
10 秒
2.1M
80
Java Tricky Program 20 - 双减法和 BigDecimal
从 Java 8 开始, FileNameFilter 是一个函数式接口,因为它只有一个方法。
Java 文件名过滤器示例
我们可以在 java 中使用 FilenameFilter 来查找目录中特定扩展名的所有文件。下面是显示如何在 java 中使用 FileNameFilter 的程序。
package com.journaldev.files;
import java.io.File;
import java.io.FilenameFilter;
public class FileNameFilterExample {
public static void main(String[] args) {
String dir = "/Users/pankaj/temp";
String extension = ".doc";
findFiles(dir, extension);
}
private static void findFiles(String dir, String extension) {
File file = new File(dir);
if (!file.exists())
System.out.println(dir + " Directory doesn't exists");
File[] listFiles = file.listFiles(new MyFileNameFilter(extension));
// File[] listFiles = file.listFiles((d, s) -> {
// return s.toLowerCase().endsWith(extension);
// });
if (listFiles.length == 0) {
System.out.println(dir + "doesn't have any file with extension " + extension);
} else {
for (File f: listFiles)
System.out.println("File: " + dir + File.separator + f.getName());
}
}
// FileNameFilter implementation
public static class MyFileNameFilter implements FilenameFilter {
private String extension;
public MyFileNameFilter(String extension) {
this.extension = extension.toLowerCase();
}
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(extension);
}
}
}
MyFileNameFilter
类实现FilenameFilter
接口并接受方法检查文件名是否以特定扩展名结尾。在 main 方法中,我们正在调用findFiles
使用 MyFileNameFilter 仅列出 xml 文件的方法。请注意,MyFileNameFilter 的编写方式是在检查文件扩展名时忽略大小写。
带有 lambda 表达式的 Java 中的 FileNameFilter
由于 FileNameFilter 是一个函数式接口,我们可以通过使用lambda 表达式来减少上面的代码。我们根本不需要编写实现。
下面是将 FileNameFilter 与 lambda 表达式一起使用的代码。
File[] listFiles = file.listFiles((d, s) -> {
return s.toLowerCase().endsWith(extension);
});
这就是 java FileNameFilter示例的全部内容。我希望它能帮助您使用某些标准列出目录中的文件。