Какво можете да разкажете за интерфейса 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 позволява създаването на повторно използваеми критерии за филтриране за работа с файловата система.