Sobes.tech
Junior

Mit tudsz mondani a FileFilter felületről?

sobes.tech MI

Válasz az MI-től

A FileFilter egy funkcionális interfész a java.io csomagban, amelyet fájlok szűrésére használnak adott kritériumok alapján. Egy absztrakt metódusa van: boolean accept(File pathname).

A metódus aláírása:

// Ellenőrzi, hogy a megadott absztrakt útvonal megfelel-e a fájlnévnek.
boolean accept(File pathname);

A accept(File pathname) metódus akkor tér vissza true értékkel, ha a pathname objektummal reprezentált fájl vagy könyvtár megfelel a szűrő feltételeinek, különben false.

A FileFilter gyakran használatos olyan metódusokban, amelyek fájllistákkal dolgoznak, például:

  • list(FileFilter filter) a File osztályban.
  • listFiles(FileFilter filter) a File osztályban.

Példa csak fájlok szűrésére (könyvtárak kizárásával):

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

public class OnlyFilesFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Aktuális könyvtár

        // Létrehozunk egy FileFiltert, ami csak fájlokat fogad el
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Igazat ad, ha fájl
            }
        };

        // A szűrőt használva kérjük le a fájlok listáját
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

A Java 8-tól elérhető lambda kifejezésekkel (mivel a FileFilter funkcionális interfész):

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

public class LambdaFileFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Aktuális könyvtár

        // Lambda kifejezés használata FileFilterként
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Könyvtárak szűrése

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

A FileFilter lehetővé teszi újrahasznosítható szűrőkritériumok létrehozását a fájlrendszerrel való munkához.