FileFilter interfeysi haqida nima deyish mumkin?
sobes.tech AI
AIdan javob
FileFilter java.io paketida mavjud bo'lgan va belgilangan mezonlarga asoslangan fayllarni filtrlash uchun ishlatiladigan funksional interfeysdir. U bitta abstrakt metodga ega: boolean accept(File pathname).
Metodning imzosi:
// Ko'rsatilgan abstrakt yo'l fayl nomiga mos keladimi, tekshiradi.
boolean accept(File pathname);
accept(File pathname) metodi, pathname ob'ekti bilan ifodalangan fayl yoki katalog filtrlash shartlariga javob bersa, true qaytaradi, aks holda false.
FileFilter ko'pincha fayl ro'yxatlari bilan ishlaydigan metodlarda ishlatiladi, masalan:
list(FileFilter filter)Filesinfida.listFiles(FileFilter filter)Filesinfida.
Faqat fayllarni (kataloglarni chiqarib tashlab) filtrlash uchun misol:
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Joriy katalog
// Faqat fayllarni qabul qiladigan FileFilter yaratamiz
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Agar fayl bo'lsa, true
}
};
// Filtr yordamida fayllar ro'yxatini olamiz
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Java 8 va undan keyingi versiyalar uchun lambda ifodalaridan foydalanish (chunki FileFilter funksional interfeys):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Joriy katalog
// Lambda ifodasi yordamida FileFilter
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Kataloglarni filtrlash
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter fayl tizimi bilan ishlash uchun qayta ishlatiladigan filtrlash mezonlarini yaratishga imkon beradi.