Sobes.tech
Junior

Was können Sie über die FileFilter-Schnittstelle erzählen?

sobes.tech KI

Antwort von AI

FileFilter ist eine funktionale Schnittstelle im Paket java.io, die zum Filtern von Dateien anhand festgelegter Kriterien verwendet wird. Sie hat eine abstrakte Methode: boolean accept(File pathname).

Methodensignatur:

// Überprüft, ob der angegebene abstrakte Pfad zum Dateinamen passt.
boolean accept(File pathname);

Die Methode accept(File pathname) gibt true zurück, wenn die Datei oder das Verzeichnis, das durch das Objekt pathname dargestellt wird, die Filterbedingungen erfüllt, andernfalls false.

FileFilter wird häufig in Methoden verwendet, die mit Dateilisten arbeiten, wie z.B.:

  • list(FileFilter filter) in der Klasse File.
  • listFiles(FileFilter filter) in der Klasse File.

Beispiel für die Verwendung zum Filtern nur Dateien (ohne Verzeichnisse):

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

public class OnlyFilesFilterExample {

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

        // Erstellen eines FileFilter, der nur Dateien akzeptiert
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Gibt true zurück, wenn es eine Datei ist
            }
        };

        // Filter verwenden, um die Dateiliste zu erhalten
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

Verwendung von Lambda-Ausdrücken (verfügbar ab Java 8, da FileFilter eine funktionale Schnittstelle ist):

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

public class LambdaFileFilterExample {

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

        // Verwendung eines Lambda-Ausdrucks als FileFilter
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filter für Verzeichnisse

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

FileFilter ermöglicht die Erstellung wiederverwendbarer Filterkriterien für die Arbeit mit dem Dateisystem.