Sobes.tech
Junior

FileFilter arayüzü hakkında ne söyleyebilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

FileFilter, java.io paketinde bulunan ve belirli kriterlere göre dosyaları filtrelemek için kullanılan fonksiyonel bir arayüzdür. Bir soyut metoda sahiptir: boolean accept(File pathname).

Metodun imzası:

// Belirtilen soyut yolun dosya adıyla uyumlu olup olmadığını kontrol eder.
boolean accept(File pathname);

accept(File pathname) metodu, pathname nesnesiyle temsil edilen dosya veya dizinin filtre koşullarını karşılaması durumunda true, aksi takdirde false döner.

FileFilter, genellikle dosya listeleriyle çalışan metodlarda kullanılır, örneğin:

  • list(FileFilter filter) File sınıfında.
  • listFiles(FileFilter filter) File sınıfında.

Sadece dosyaları (dizinleri hariç tutarak) filtrelemek için kullanım örneği:

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

public class OnlyFilesFilterExample {

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

        // Sadece dosyaları kabul eden FileFilter oluşturuyoruz
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Dosya ise true döner
            }
        };

        // Filtreyi kullanarak dosya listesini alıyoruz
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

Java 8 ve sonrası için lambda ifadeleri kullanımı (çünkü FileFilter fonksiyonel bir arayüzdür):

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

public class LambdaFileFilterExample {

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

        // Lambda ifadesi kullanarak FileFilter
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Dizinleri filtreleme

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

FileFilter, dosya sistemiyle çalışmak için tekrar kullanılabilir filtre kriterleri oluşturmanıza olanak tanır.