Sobes.tech
Junior

Čo môžete povedať o rozhraní FileFilter?

sobes.tech AI

Odpoveď od AI

FileFilter je funkčné rozhranie v balíku java.io, ktoré sa používa na filtrovanie súborov na základe zadaných kritérií. Má jednu abstraktnú metódu: boolean accept(File pathname).

Signatúra metódy:

// Kontroluje, či zadaná cesta zodpovedá názvu súboru.
boolean accept(File pathname);

Metóda accept(File pathname) vracia true, ak súbor alebo adresár reprezentovaný objektom pathname spĺňa podmienky filtra, a false v opačnom prípade.

FileFilter sa často používa v metódach, ktoré pracujú so zoznamami súborov, ako sú:

  • list(FileFilter filter) v triede File.
  • listFiles(FileFilter filter) v triede File.

Príklad použitia na filtrovanie iba súborov (vylúčenie adresárov):

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

public class OnlyFilesFilterExample {

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

        // Vytvárame FileFilter na prijatie iba súborov
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Vráti true, ak je to súbor
            }
        };

        // Používame filter na získanie zoznamu súborov
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

Použitie lambda výrazu (dostupné od Java 8, keďže FileFilter je funkčné rozhranie):

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

public class LambdaFileFilterExample {

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

        // Používame lambda výraz ako FileFilter
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filter pre adresáre

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

FileFilter umožňuje vytvárať opakovane použiteľné kritériá filtrovania pre prácu so súborovým systémom.