estoy haciendo un programa en el que me muestre en la TFT la lista de archivos y directorios que estan almacenados en un tarjeta SD.
He logrado hacer una funcion que guarda todos los nombres de los archivos de un directorio en un array,otra funcion que muestra los directorios y una ultima funcion que verifica si el archivo seleccionado es una directorio.
Mi problema es el siguiente.
Solo necesito archivos.jpg o directorios que contenga archivos.jpg,lo demas quiero ignorarlo
Alguien me da alguna idea de como podria empezar a plantearlo.
Revisar que un subdirectorio tenga archivos de cierta extensión, para decidir si mostrarlo o no, podría ser complicado de realizar y además comsume memoria (RAM) por ser un proceso recursivo.
Lo que no es difícil, es filtrar el contenido del directorio de trabajo. En dicho filtro, deben pasar subdirectorios y archivos regulares cuyo nombre termine en ".jpg". La condicional es la siguiente:
if (archivo.isDirectory() || strstr(archivo.name(), ".jpg") || strstr(archivo.name(), ".JPG")) {
// Pasan los subdirectorios y archivos con extensión .jpg
} else {
// Ocultar este archivo
}
strstr() se usa para verificar si una cadena está contenida en otra, por eso es para filtrar archivos por su extensión.
PD: debido a como se escriben las "entradas del directorio" en los sistemas de archivos FAT, al leerlos en secuencia se te pueden mezclar subdirectorios con archivos regulares; en vez de estar agrupados como lo hacen los exploradores de archivos.
Para agrupar (o incluso ordenar) la lista antes de presentarla, primero el sistema ha de tener suficiente memoria RAM, luego escoger algún algoritmo de ordenamiento para la agrupación (directorio o archivo), y si quieres, hasta por orden alfabético de los nombres.