📘 What is FileFilter
?
- It’s part of
java.io
. - It’s a functional interface with one method:
boolean accept(File pathname);
Used to filter files or directories based on your logic (e.g., extension, size, name pattern).
🔧 Common Use Case
Used with:
File[] filteredFiles = directory.listFiles(FileFilter filter);
✅ Example: Filter .txt
Files
import java.io.*;
public class TxtFileFilterDemo {
public static void main(String[] args) {
File dir = new File("documents");
File[] txtFiles = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.getName().endsWith(".txt");
}
});
for (File file : txtFiles) {
System.out.println(file.getName());
}
}
}
🧠 Java 8+ Lambda Version
Because it’s a functional interface, you can use a lambda:
File[] txtFiles = dir.listFiles(file -> file.getName().endsWith(".txt"));
Much cleaner! 🧼
💡 Real-World Uses
Scenario | Filter Logic |
---|---|
Only images | `name.endsWith(“.jpg”) |
Only directories | file.isDirectory() |
Files > 1MB | file.length() > 1024 * 1024 |
🧵 TL;DR
Feature | Description |
---|---|
Type | @FunctionalInterface |
Method | boolean accept(File pathname) |
Purpose | Filter files returned by listFiles() |
Added in | Java 1.2 |
Alternative | FilenameFilter (older, takes name as string) |