Junior
FileFilter интерфейси жөнүндө эмне айта аласыз?
sobes.tech AI
AIден жооп
FileFilter — бул java.io пакетиндеги функционалдык интерфейс, ал белгиленген критерийлерге негизделген файлдарды фильтрлөө үчүн колдонулат. Ал бир абстракттык ыкмага ээ: boolean accept(File pathname).
Ыкманын синтаксиси:
// Белгиленген жол файлдын атына ылайыктуубу текшерет.
boolean accept(File pathname);
Метод accept(File pathname) эгер файл же каталог pathname объектисинде көрсөтүлгөн шарттарга жооп берсе, true кайтарат, ал эми тескерисинче — 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ден баштап колдонууга мүмкүн болгон lambda-экспрессияны колдонуу (эгер FileFilter — функциялык интерфейс):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Учурдагы каталог
// Lambda-экспрессияны FileFilter катары колдонуу
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Каталондор үчүн фильтр
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter файл системи менен иштөө үчүн кайра колдонулчу критерийлерди түзүүгө мүмкүндүк берет.