¿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 claseFile.listFiles(FileFilter filter)en la claseFile.
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.