Что знаешь об интерфейсе FileFilter? FileFilter — это интерфейс в… — Java | Вопросы собесов — TG.ME

🤔 Что знаешь об интерфейсе FileFilter?

FileFilter — это интерфейс в пакете java.io, используемый для фильтрации файлов в каталогах. Он применяется в методе listFiles(FileFilter filter) класса File и позволяет выбрать только те файлы, которые соответствуют заданным критериям.

🚩Как работает `FileFilter`?

Этот интерфейс содержит всего один метод:
boolean accept(File pathname);


🚩Пример использования `FileFilter`

Допустим, мы хотим отфильтровать все файлы .txt в заданной папке:
import java.io.File;
import java.io.FileFilter;

public class TxtFileFilterExample {
public static void main(String[] args) {
File directory = new File("C:/example"); // Укажите свою папку

// Используем FileFilter для выбора файлов с расширением .txt
FileFilter txtFilter = new FileFilter() {
@Override
public boolean accept(File file) {
return file.isFile() && file.getName().endsWith(".txt");
}
};

// Получаем список файлов, соответствующих фильтру
File[] txtFiles = directory.listFiles(txtFilter);

// Выводим найденные файлы
if (txtFiles != null) {
for (File file : txtFiles) {
System.out.println("Файл: " + file.getName());
}
}
}
}


Выходные данные (если в папке C:/example есть файлы .txt)
Файл: notes.txt
Файл: tasks.txt


🚩Lambda-версия (Java 8+)

Вместо анонимного класса можно использовать лямбда-выражение:
FileFilter txtFilter = file -> file.isFile() && file.getName().endsWith(".txt");


🚩Разница между `FileFilter` и `FilenameFilter`

FileFilter принимает объект File, позволяя фильтровать как файлы, так и каталоги.
FilenameFilter принимает только имя файла (без пути).
import java.io.File;
import java.io.FilenameFilter;

public class TxtFilenameFilterExample {
public static void main(String[] args) {
File directory = new File("C:/example");

// Фильтр для файлов .txt
FilenameFilter txtFilter = (dir, name) -> name.endsWith(".txt");

String[] txtFiles = directory.list(txtFilter);
if (txtFiles != null) {
for (String file : txtFiles) {
System.out.println("Файл: " + file);
}
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
👍4
September 3, 2026 505 5