Listar y Filtrar archivos con FileFilter en Java

Para listar y filtrar archivos con FileFilter en Java debemos importar File y FileFilter del paquete java.io. Sobrescribiendo la función accept de FileFilter podremos definir las características, prefijos, sufijos o la extensión de archivos que deseemos filtrar.

» Ver más ejemplos de Java

Te mostramos el código:

package com.decodigo.ejemplo;

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

/**
 *
 * @author decodigo.com
 */
public class FiltrarArchivosConFileFilter {

    public static void main(String[] args) {

        //Creamos nuestro filtro de archivos o ficheros
        FileFilter archivosFilter = new FileFilter() {
            //Sobreescribimos el método
            public boolean accept(File file) {
                if (file.getName().endsWith(".txt")) {
                    return true;
                }
                return false;
            }
        };

        File directorio = new File("/ruta/");

        //Verificamos si la carpeta existe
        if (!directorio.exists()) {
            System.out.println(String.format("La carpeta %s no existe.", directorio.getName()));
            return;
        }

        //Verificamos que se trate de una carpeta o directorio y no un archivo
        if (!directorio.isDirectory()) {
            System.out.println(String.format("La entrada %s no es un directorio", directorio.getName()));
            return;
        }

        File[] files = directorio.listFiles(archivosFilter);

        //Listamos en un ciclo for los resultados
        for (File f : files) {
            System.out.println(f.getName());
        }
    }
}

Como puedes ver, creamos una instancia y sobrescribimos la clase FileFilter y su método acept() y lo único que hacemos es devolver un valor verdadero si la cadena con el nombre del archivo termina con la extensión «.txt«.

        FileFilter archivosFilter = new FileFilter() {
            //Sobreescribimos el método
            public boolean accept(File file) {
                if (file.getName().endsWith(".txt")) {
                    return true;
                }
                return false;
            }
        };

Con las funciones de String puedes buscar una cadena específica, un prefijo o puedes agregar más condiciones para incluir otras extensiones de archivo.

Las líneas siguientes simplemente crean una instancia de la clase File con la ruta del directorio de interés. Verificamos que exista y que en efecto se trate de un directorio.

        File directorio = new File("/ruta/");

        //Verificamos si la carpeta existe
        if (!directorio.exists()) {
            System.out.println(String.format("La carpeta %s no existe.", directorio.getName()));
            return;
        }

        //Verificamos que se trate de una carpeta o directorio y no un archivo
        if (!directorio.isDirectory()) {
            System.out.println(String.format("La entrada %s no es un directorio", directorio.getName()));
            return;
        }

Posteriormente usamos la función de File llamada listFiles(), que devuelve un arreglo de File con los archivos encontrados. Esta función recibe como argumento a la variable archivosFilter que creamos al inicio.

        File[] files = directorio.listFiles(archivosFilter);

        //Listamos en un ciclo for los resultados
        for (File f : files) {
            System.out.println(f.getName());
        }

Ejecutar el código del ejemplo

En nuestro ejemplo estamos buscando archivos en un directorio donde al menos uno de ellos no cumple con nuestra condición:

Listar y Filtrar archivos con FileFilter en Java

Si ejecutas el ejemplo obtendrás el listado de archivos que coincidan con nuestra condición en FileFiter:

Listar y Filtrar archivos con FileFilter en Java

En la ventana de salida de nuestro editor se ha omitido en la lista de resultados al archivo «prueba.log». Otra cosa que debes observar, es que puede ocurrir que la lista se muestre en un orden diferente al que vemos en el explorador de archivos, el ordenamiento en la salida de datos que muestres al usuario dependerá de ti y debes tomar en cuenta las opciones que cada elemento del arreglo de File tiene disponibles como nombre, fecha o tamaño.

Esperamos que este ejemplo para Listar y Filtrar archivos con FileFilter en Java te sea de utilidad.

Ver la documentación: https://docs.oracle.com/javase/8/docs/api/java/io/FileFilter.html

Más información en inglés: https://geekole.com/list-and-filter-files-with-filefilter/