Sobes.tech
Junior

¿Qué puede contarme sobre la interfaz FileFilter?

sobes.tech AI

Respuesta de la IA

FileFilter es una interfaz funcional en el paquete java.io, que se utiliza para filtrar archivos según criterios establecidos. Tiene un método abstracto: boolean accept(File pathname).

Firma del método:

// Verifica si la ruta abstracta especificada se ajusta al nombre del archivo.
boolean accept(File pathname);

El método accept(File pathname) devuelve true si el archivo o directorio representado por el objeto pathname cumple con las condiciones del filtro, y false en caso contrario.

FileFilter se usa a menudo en métodos que trabajan con listas de archivos, como:

  • list(FileFilter filter) en la clase File.
  • listFiles(FileFilter filter) en la clase File.

Ejemplo de uso para filtrar solo archivos (excluyendo directorios):

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

public class OnlyFilesFilterExample {

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

        // Crear un FileFilter para aceptar solo archivos
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Devuelve true si es un archivo
            }
        };

        // Usar el filtro para obtener la lista de archivos
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

Uso de expresiones lambda (disponible desde Java 8, ya que FileFilter es una interfaz funcional):

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

public class LambdaFileFilterExample {

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

        // Usar expresión lambda como FileFilter
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filtro para directorios

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

FileFilter permite crear criterios de filtrado reutilizables para trabajar con el sistema de archivos.