在 File 类中使用 FilenameFilter
使用过滤器的最佳方法是将其传递给 java.io.File类中的以下方法之一,其中 File表示目录位置:
- String[] list(FilenameFilter filter) :返回命名目标目录中的文件和目录的字符串数组。
- File[] listFiles(FilenameFilter filter) :返回目标目录中的文件和目录数组。
Java FilenameFilter 类
从 Java 8 开始,FileNameFilter是一个函数式接口。
实现此接口的类用于过滤文件名。
它有一个方法:
/** * Parameters: * dir - 过滤文件所在目录 * name - 文件名 * Returns: * 文件名在列表中,则返回true */ boolean accept(File dir, String name)
使用 Lambda 表达式创建 FilenameFilter
由于 FileNameFilter是一个函数式接口,我们可以使用 lambda 表达式减少代码。
import java.io.File;
import java.io.FilenameFilter;
public class FilenameFilterExample
{
public static void main(String[] args)
{
// 设置要查找的目录
String targetDirectory = "c:\temp";
File dir = new File(targetDirectory);
// 过滤出log文件
String[] logFiles = dir.list((d, s) -> {
return s.toLowerCase().endsWith(".log");
});
// 没有找到log文件
if (logFiles.length == 0)
return;
// 打印出所有log文件
for (String log : logFiles)
{
String tempLogFile = new StringBuffer(targetDirectory).append(File.separator).append(log).toString();
System.out.println("file : " + tempLogFile );
}
}
}
欢迎 on
it
road
示例:Java 程序使用 FilenameFilter 查找所有日志文件
在这个例子中,我们将使用 FilenameFilter实例列出文件夹 c:/temp中的所有 .log文件。
import java.io.File;
import java.io.FilenameFilter;
public class FilenameFilterExample
{
public static void main(String[] args)
{
// 设置查找目录
String targetDirectory = "c:\temp";
File dir = new File(targetDirectory);
// 过滤出所有log文件
String[] logFiles = dir.list(new LogFilterFilter());
if (logFiles.length == 0)
return;
// 打印出所有log文件
for (String log : logFiles)
{
String tempLogFile = new StringBuffer(targetDirectory).append(File.separator).append(log).toString();
System.out.println("file : " + tempLogFile );
}
}
}
// 设置过滤器,检查文件扩展名是否为log
class LogFilterFilter implements FilenameFilter
{
@Override
public boolean accept(File dir, String fileName)
{
return (fileName.endsWith(".log"));
}
}
示例Java使用正则表达式创建 FilenameFilter 过滤器
Java程序根据匹配正则表达式的文件名过滤所有文件。
例如,我们要列出名称中不包含数字的所有文件。
import java.io.File;
import java.io.FilenameFilter;
public class FilenameFilterExample
{
public static void main(String[] args)
{
// 查找目录
String targetDirectory = "c:\temp";
File dir = new File(targetDirectory);
// 过滤出log文件
String[] logFiles = dir.list((d, s) -> {
// return s.matches("[a-zA-z]+\.[a-z]+");
return s.matches("[a-zA-z]+\.log");
});
// 没有找到log文件
if (logFiles.length == 0)
return;
// 打印出所有log文件
for (String log : logFiles)
{
String tempLogFile = new StringBuffer(targetDirectory).append(File.separator).append(log).toString();
System.out.println("file : " + tempLogFile );
}
}
}
日期:2020-09-17 00:09:18 来源:oir作者:oir
