文章目录 1.FileFilter类 2. 如何使用FileFilter 3. FileFilter示例 3.1 在指定目录中过滤所有匹配的文件 3.2使用Lambda表达式创建FileFilter Java FileFilter是用于……
文
章
目
录
- 1.FileFilter类
- 2. 如何使用FileFilter
- 3. FileFilter示例
- 3.1 在指定目录中过滤所有匹配的文件
- 3.2使用Lambda表达式创建FileFilter
Java FileFilter是用于表示给定目录中的文件和子目录的File对象的过滤器。它是一个函数式接口,因此可以作为lambda表达式或方法引用的分配目标。
FileFilter的使用类似于FilenameFilter,但后者仅使用文件的名称来做出决定。FileFilter接受File对象,因此可以根据其他属性(例如只读)过滤文件。
1.FileFilter类
FileFilter类只有一个方法accept()用于测试是否应该将指定的抽象路径名包含在路径名列表中。
如果pathname应该包含在列表中,它返回true。否则,返回false。
FilerFilter for log files FileFilter logFilefilter = new FileFilter()
{
public boolean accept(File file) {
if (file.getName().endsWith(\".log\")) {
return true;
}
return false;
}
};
2. 如何使用FileFilter
使用FileFilter的最佳方法是将其传递给File类中的listFiles()方法,其中File表示目录位置。
File directory = new File(\"/path/directory\");
File[] files = directory.listFiles(logFilefilter);
3. FileFilter示例
3.1 在指定目录中过滤所有匹配的文件
在给定的Java示例中,我们在“c:/temp”目录中查找所有日志文件。
File directory = new File(\"c:/temp\");
//验证是否是一个有效目录
if (!(directory.exists() && directory.isDirectory()))
{
System.out.println(String.format(\"Directory %s does not exist\", directory));
return;
}
FileFilter logFilefilter = new FileFilter() {
public boolean accept(File file) {
if (file.getName().endsWith(\".log\")) {
return true;
}
return false;
}
};
File[] files = directory.listFiles(logFilefilter);
for (File f: files)
{
System.out.println(f.getName());
}
上述程序将列出c:/temp文件夹中存在的所有.log文件。
3.2使用Lambda表达式创建FileFilter
给定的程序使用lambda表达式语法创建FileFilter实例。其余操作将保持不变。
FileFilter logFileFilter = (file) -> {
return file.getName().endsWith(\".log\");
};
File[] files = directory.listFiles(logFilefilter);
还没有评论呢,快来抢沙发~