Шумо чӣ мегӯед дар бораи интерфейси FileFilter?
sobes.tech AI
Ҷавоб аз AI
FileFilter — гэта функцыянальны інтэрфейс у пакеце java.io, які выкарыстоўваецца для фільтрацыі файлаў на аснове зададзеных крытэрыяў. Ён мае адзін абстрактны метад: boolean accept(File pathname).
Сігнатура метаду:
// Правярае, ці падыходзіць указаны шлях да імя файла.
boolean accept(File pathname);
Метад accept(File pathname) вяртае true, калі файл або каталог, прадстаўлены аб'ектам pathname, адпавядаюць умовам фільтра, і false у супрацьлеглым выпадку.
FileFilter часта выкарыстоўваецца ў метадах, якія працуюць са спісамі файлаў, такіх як:
list(FileFilter filter)у класеFile.listFiles(FileFilter filter)у класеFile.
Прыклад выкарыстання для фільтрацыі толькі файлаў (выключаючы каталёгі):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Цяперашні каталог
// Ствараем FileFilter для прыняцця толькі файлаў
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Вяртае true, калі гэта файл
}
};
// Выкарыстоўваем фільтр для атрымання спісу файлаў
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Выкарыстанне лямбда-выражэння (даступна з Java 8, бо FileFilter з'яўляецца функцыянальным інтэрфейсам):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Цяперашні каталог
// Выкарыстоўваем лямбда-выражэнне ў якасці FileFilter
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Фільтр для каталёгаў
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter дазваляе ствараць паўторна выкарыстоўваныя крытэрыі фільтрацыі для працы з файлавай сістэмай.