Archivos de noviembre, 2008

Ordenación de ficheros en un directorio

20 de noviembre de 2008

Los métodos list y listFiles, aplicables a un objeto de tipo File, no aseguran el orden en el que se devuelven los contenidos de un directorio.

Si se desea que el listado de ficheros tenga un orden determinado, es necesario realizar una ordenación posteriormente.

A continuación presentamos dos tipos de ordenación. La primera devuelve los resultados en orden por fecha de modificación. La segunda es un tanto especial, ya que devuelve siempre en primer lugar, si existe, un fichero del que se conoce previamente el nombre, y el resto de resultados los ordena alfabéticamente.

File[] filesPorFecha = directory.listFiles();
 
Arrays.sort(filesPorFecha, new Comparator<File>(){
	public int compare(File f1, File f2){
        return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
} });
String[] filesPorNombre = directory.list();
 
Arrays.sort(filesPorNombre, new Comparator<String>(){
         public int compare(String f1, String f2){
		if (!f1.equals(f2) && f1.equals("nombredelfichero")){
			return -1;
		}else if (!f1.equals(f2) && f2.equals("nombredelfichero")){
			return 1;
		}else{
			return f1.compareTo(f2);
		}
         }
 });