Sobes.tech
Junior

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) File sinfida.
  • listFiles(FileFilter filter) File sinfida.

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.