Sobes.tech
Junior

Que pouvez-vous me dire sur l'interface FileFilter?

sobes.tech IA

Réponse de l'IA

FileFilter est une interface fonctionnelle dans le package java.io, utilisée pour filtrer les fichiers selon des critères donnés. Elle possède une méthode abstraite : boolean accept(File pathname).

Signature de la méthode :

// Vérifie si le chemin abstrait spécifié correspond au nom du fichier.
boolean accept(File pathname);

La méthode accept(File pathname) retourne true si le fichier ou le répertoire représenté par l'objet pathname répond aux conditions du filtre, sinon false.

FileFilter est souvent utilisé dans des méthodes qui manipulent des listes de fichiers, telles que :

  • list(FileFilter filter) dans la classe File.
  • listFiles(FileFilter filter) dans la classe File.

Exemple d'utilisation pour filtrer uniquement les fichiers (excluant les répertoires) :

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

public class OnlyFilesFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Répertoire courant

        // Créer un FileFilter pour accepter uniquement les fichiers
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Retourne true si c'est un fichier
            }
        };

        // Utiliser le filtre pour obtenir la liste des fichiers
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

Utilisation d'expressions lambda (disponible depuis Java 8, car FileFilter est une interface fonctionnelle) :

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

public class LambdaFileFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Répertoire courant

        // Utiliser une expression lambda comme FileFilter
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filtre pour les répertoires

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

FileFilter permet de créer des critères de filtrage réutilisables pour travailler avec le système de fichiers.