🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Java `FileFilter`示例 > 原文: [https://howtodoinjava.com/java/io/java-io-filefilter-example-tutorial/](https://howtodoinjava.com/java/io/java-io-filefilter-example-tutorial/) 有时我们会遇到这样的情况:必须在目录中处理特定类型的文件。 IO 包中提供[**`java.io.FileFilter`**](https://docs.oracle.com/javase/6/docs/api/java/io/FileFilter.html "FileFilter")类仅用于这些目的。 让我们看一个简单的例子。 没什么复杂的。 让我们看一下`FileFilter`接口的源代码。 它仅包含一个方法,该方法将`File`实例作为参数,并根据文件满足所需条件返回`true`/`false。` ```java public interface FileFilter { public abstract boolean accept(File file); } ``` 在此示例中,我正在构建`FileFilter`的实例,该实例可用于从指定目录中过滤掉`.log `文件。 让我们看一下`FileFilter`实例的实现代码。 ```java //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`的工作示例。 ```java 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`”文件夹中的所有日志文件。 您可以构建自己的文件过滤器实例并实现自己的规则。 其余逻辑保持不变。 **祝您学习愉快!**