Sobes.tech
Junior

Co můžete říct o rozhraní FileFilter?

sobes.tech AI

Odpověď od AI

FileFilter je funkcionální rozhraní v balíčku java.io, které se používá k filtrování souborů na základě zadaných kritérií. Má jednu abstraktní metodu: boolean accept(File pathname).

Podpis metody:

// Kontroluje, zda zadaná abstraktní cesta odpovídá názvu souboru.
boolean accept(File pathname);

Metoda accept(File pathname) vrací true, pokud soubor nebo adresář reprezentovaný objektem pathname splňuje podmínky filtru, jinak false.

FileFilter se často používá v metodách, které pracují se seznamy souborů, například:

  • list(FileFilter filter) ve třídě File.
  • listFiles(FileFilter filter) ve třídě File.

Příklad použití pro filtrování pouze souborů (vyloučení adresářů):

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

public class OnlyFilesFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Aktuální adresář

        // Vytvoříme FileFilter, který přijímá pouze soubory
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Vrací true, pokud je to soubor
            }
        };

        // Použijeme filtr k získání seznamu souborů
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

Použití lambda výrazů (dostupné od Java 8, protože FileFilter je funkční rozhraní):

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

public class LambdaFileFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Aktuální adresář

        // Použití lambda výrazu jako FileFilter
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filtr pro adresáře

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

FileFilter umožňuje vytvářet znovu použitelné kritéria filtrování pro práci se souborovým systémem.