Java FileFilter
示例
原文: https://howtodoinjava.com/java/io/java-io-filefilter-example-tutorial/
有时我们会遇到这样的情况:必须在目录中处理特定类型的文件。 IO 包中提供java.io.FileFilter
类仅用于这些目的。 让我们看一个简单的例子。 没什么复杂的。
让我们看一下FileFilter
接口的源代码。 它仅包含一个方法,该方法将File
实例作为参数,并根据文件满足所需条件返回true
/false。
public interface FileFilter
{
public abstract boolean accept(File file);
}
在此示例中,我正在构建FileFilter
的实例,该实例可用于从指定目录中过滤掉.log
文件。 让我们看一下FileFilter
实例的实现代码。
//create a FileFilter and override its accept-method
FileFilter logFilefilter
= new FileFilter() {
//Override accept method
public boolean accept(File file) {
//if the file extension is .log return true, else false
if (file.getName().endsWith(".log")) {
return true;
}
return false;
}
};
上面的accept
方法检查文件扩展名; 如果是.log
,则将其视为日志文件,并且方法返回true
;否则,方法返回false
。
现在来看FileFilter
的工作示例。
import java.io.File;
import java.io.FileFilter;
public class IOUtils
{
public void getFiles(String dir)
{
File directory = new File(dir);
//Verify if it is a valid file name
if (!directory.exists())
{
System.out.println(String.format("Directory %s does not exist", dir));
return;
}
//Verify if it is a directory and not a file path
if (!directory.isDirectory())
{
System.out.println(String.format("Provided value %s is not a directory", dir));
return;
}
File[] files = directory.listFiles(logFilefilter);
//Let's list out the filtered files
for (File f : files)
{
System.out.println(f.getName());
}
}
//create a FileFilter and override its accept-method
FileFilter logFilefilter = new FileFilter() {
//Override accept method
public boolean accept(File file) {
//if the file extension is .log return true, else false
if (file.getName().endsWith(".log")) {
return true;
}
return false;
}
};
//Test the file filtering
public static void main(String[] args)
{
IOUtils ioUtils = new IOUtils();
ioUtils.getFiles("C:\\temp");
}
}
Output:
test.log
test1.log
上面的程序将列出“c:/temp
”文件夹中的所有日志文件。
您可以构建自己的文件过滤器实例并实现自己的规则。 其余逻辑保持不变。
祝您学习愉快!