Sobes.tech
Junior

Cosa puoi dirmi sull'interfaccia FileFilter?

sobes.tech AI

Risposta dell'AI

FileFilter è un'interfaccia funzionale nel pacchetto java.io, utilizzata per filtrare i file in base a criteri specificati. Ha un metodo astratto: boolean accept(File pathname).

Firma del metodo:

// Verifica se il percorso astratto specificato corrisponde al nome del file.
boolean accept(File pathname);

Il metodo accept(File pathname) restituisce true se il file o la directory rappresentati dall'oggetto pathname soddisfano le condizioni del filtro, altrimenti false.

FileFilter viene spesso utilizzato in metodi che lavorano con liste di file, come:

  • list(FileFilter filter) nella classe File.
  • listFiles(FileFilter filter) nella classe File.

Esempio di utilizzo per filtrare solo i file (escludendo le directory):

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

public class OnlyFilesFilterExample {

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

        // Creiamo un FileFilter per accettare solo i file
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Restituisce true se è un file
            }
        };

        // Usare il filtro per ottenere la lista dei file
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

Utilizzo di espressioni lambda (disponibile da Java 8, poiché FileFilter è un'interfaccia funzionale):

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

public class LambdaFileFilterExample {

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

        // Usare un'espressione lambda come FileFilter
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filtro per directory

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

FileFilter permette di creare criteri di filtraggio riutilizzabili per lavorare con il file system.