Obtener archivos según su extensión (FilenameFilter)


/**
 * Listar archivos de una carpeta según su extensión.
 * Ejemplo: listFileByExtension("/home/juan/Video", ".srt", ".mp4");
 * 
 * @param filePath path de la carpeta donde listar los archivos.
 * @param extensions extensiones por las que filtrar.
 * @return lista de archivos.
 */
public static File[] listFileByExtension(String filePath, final String... extensions){
    File[] listFiles = new File[0];
        
    FilenameFilter filter = new FilenameFilter() {

        @Override
        public boolean accept(File dir, String name) {
            boolean ret = false;
            for (String ext : extensions) {
                if(name.toLowerCase().endsWith(ext)){
                    ret = true;
                    break;
                }
            }
                
            return ret;
        }
    };
    File file = new File(filePath);
    if(file.exists()){
        listFiles = file.listFiles(filter);
    }
        
    return listFiles;
} 
    
FilenameFilter es una interfaz que contiene solamente el método public boolean accept(File dir, String name). Este método devuelve:
  • true: el archivo se añade a la lista a devolver.
  • false: el archivo no se añade a la lista a devolver.

 Este método accept se llama automáticamente al realizar file.listFiles(filter).

Comentarios

Entradas populares de este blog

Java. Texto de colores en la consola

javax.swing.JList

javax.swing.JPasswordField