1. Introducción
Queremos filtar ficheros para ello utilizamos el Functional Interfase FilenameFilter, y también la libreria apache.commons.io
2. Crear un filtro por nombre con FilenameFilter
Queremos que el nombre del fichero verifique un patrón regex. Podríamos hacer
FilenameFilter myNameFilter = (dir, name) -> name.matches(pattern);
Supongamos que queremos que el nombre verifique un patrón regex por ejemplo que empliece el nombre pro "DECRETO" y que tenga la palabra"Copia" en mitad del nombre y que sea de estensión "pdf".Sse podria hacer
pattern= "DECRET(.*)Copia(.*)\\.pdf";
3. Crear un filtro por fecha con apache.commons.IOFileFilter
Tenemos para ficheros posteriores a una fecha "Date from"
IOFileFilter myDateFileFilter = FileFilterUtils.ageFileFilter(from, false);
Para el caso de ficheros anteriores a esa fecha, en vez de "false" hay que decir "true"
4. Crear un filtro que solo recoja archivos (no carpetas..)
Tenemos para ficheros posteriores a una fecha "Date from"
IOFileFilter myFileFilter = FileFilterUtils.fileFileFilter();
5. Combinemos los filtros
Utilizamos tambien apache.commons.FileFilterUtils.and:
FileFilter myCombinedFileFilter = FileFilterUtils.and(
myFileFilter, // Only select files
myNameFilter, // Filter by name
myDateFileFilter); // Filter by newer than date
Y para recoger todos los ficheros de la carpeta "downloads":
File myDir = new File("/home/ximo/downloads");
File[] dirFiles = myDir.listFiles(myCombinedFileFilter);
No hay comentarios :
Publicar un comentario