Sobes.tech
Junior

Wat kunt u vertellen over de FileFilter-interface?

sobes.tech AI

Antwoord van AI

FileFilter is een functioneel interface in de package java.io, dat wordt gebruikt om bestanden te filteren op basis van opgegeven criteria. Het heeft één abstracte methode: boolean accept(File pathname).

Handtekening van de methode:

// Controleert of het opgegeven abstracte pad overeenkomt met de bestandsnaam.
boolean accept(File pathname);

De methode accept(File pathname) retourneert true als het bestand of de directory, voorgesteld door het object pathname, voldoet aan de filtervoorwaarden, en false anders.

FileFilter wordt vaak gebruikt in methoden die werken met lijsten van bestanden, zoals:

  • list(FileFilter filter) in de klasse File.
  • listFiles(FileFilter filter) in de klasse File.

Voorbeeld van gebruik om alleen bestanden te filteren (exclusief directories):

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

public class OnlyFilesFilterExample {

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

        // Maak een FileFilter dat alleen bestanden accepteert
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Retourneert true als het een bestand is
            }
        };

        // Gebruik de filter om de lijst van bestanden te krijgen
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

Gebruik van lambda-uitdrukkingen (beschikbaar vanaf Java 8, omdat FileFilter een functioneel interface is):

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

public class LambdaFileFilterExample {

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

        // Gebruik een lambda-uitdrukking als FileFilter
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filter voor directories

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

FileFilter maakt het mogelijk om herbruikbare filtercriteria te maken voor het werken met het bestandssysteem.