Sobes.tech
Junior

FileFilter interfeysi haqqında nə deyə bilərsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

FileFilter, java.io paketində mövcud olan və müəyyən edilmiş meyarlar əsasında faylları filtrləmək üçün istifadə olunan funksional interfeysdir. Bir abstrakt metodu var: boolean accept(File pathname).

Metodun imzası:

// Verilmiş abstrakt yolun fayl adlarına uyğun olub-olmadığını yoxlayır.
boolean accept(File pathname);

accept(File pathname) metodu, pathname obyekti ilə təmsil olunan fayl və ya qovluğun filtr şərtlərinə cavab verdiyi halda true, əks halda false qaytarır.

FileFilter çox vaxt fayl siyahıları ilə işləyən metodlarda istifadə olunur, məsələn:

  • list(FileFilter filter) File sinifində.
  • listFiles(FileFilter filter) File sinifində.

Yalnız faylları (qovluqları istisna edərək) filtrləmək üçün nümunə:

import java.io.File;
import java.io.FileFilter;

public class OnlyFilesFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Cari qovluq

        // Yalnız faylları qəbul edən FileFilter yaradın
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Fayl isə true qaytarır
            }
        };

        // Filtrdən istifadə edərək fayl siyahısını alın
        File[] fichiers = dir.listFiles(onlyFilesFilter);

        if (fichiers != null) {
            for (File fichier : fichiers) {
                System.out.println(fichier.getName());
            }
        }
    }
}

Java 8 və yuxarı versiyalar üçün lambda ifadələrindən istifadə (çünki FileFilter funksional interfeysdir):

import java.io.File;
import java.io.FileFilter;

public class LambdaFileFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Cari qovluq

        // Lambda ifadəsi ilə FileFilter istifadə edin
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Qovluqları filtrləyir

        if (directories != null) {
            for (File directory : directories) {
                System.out.println(directory.getName());
            }
        }
    }
}

FileFilter fayl sistemində işləmək üçün təkrar istifadə oluna bilən filtr kriteriyaları yaratmağa imkan verir.