Buenas,
hoy vamos a ver como borrar todos los archivos dentro de un directorio o únicamente los archivos con una extensión dada.

Esto es muy sencillo. Únicamente copiamos el siguiente código en una clase en nuestro proyecto y lo llamamos con el directorio, la antigüedad y la extensión de archivos a eliminar.

private void borrarContenidoDirectorio(String direccion, int numDias, String extension) {
    File directorio = new File(direccion);
    if (directorio.exists() && directorio.isDirectory()) {
        File f;
        long t;
        for (String archivo : directorio.list()) {
            f = new File(direccion + File.separator + archivo);
            t = (System.currentTimeMillis() - f.lastModified());
            // long cantidadDia = (t / 86400000);
            // 86400000 ms es equivalente a un día (24 horas)
            if ((extension == null && t > (86400000 * numDias))
                    || (archivo.contains("." + extension) && t > (86400000 * numDias))) {
                f.delete();
                f.deleteOnExit();
            }
        }
    }
}

El código no necesita mucha explicación. Es simple, y creo que efectivo para cualquier aplicación. En el caso de que se quiera borrar todos los archivos dentro de un directorio usar el útimo argumento como “null”.

Y si queréis borrar de forma recursiva a través de distintos directorios emparentados, la implementación sería muy sencilla a partir de esta. A continuación un método para borrar todo el contenido de un directorio, sea el que sea, y a él mismo al final del proceso.

private void borrarDirectorio(String direccion) {
    File directorio = new File(direccion);
    if (directorio.exists() && directorio.isDirectory()) {
        File f;
        for (String archivo : directorio.list()) {
            f = new File(direccion + File.separator + archivo);
            if (f.isDirectory()) {
                borrarDirectorio(f.getAbsolutePath());
                f.delete();
                f.deleteOnExit();
            } else { //Es un archivo
                f.delete();
                f.deleteOnExit();
            }
        }

        //Borrar las 2 siguientes líneas para no eliminar el directorio raíz
        directorio.delete();
        directorio.deleteOnExit();
    }
}

No deberíais tener problemas al copiar el código y pegarlo en vuestro IDE para que todo salga tal y como aparece en el blog. Yo lo he probado hasta ahora con Eclipse y funciona bien.

Me gustaría decir que aunque en el título se indica que el algoritmo es para Windows es por el único motivo de que ha sido en el único sistema operativo que lo he probado. Dada la naturaleza de Java, su ejecución no debería tener ningún inconveniente en cualquier otra plataforma.

Espero que sea útil a alguien. Hasta la próxima.

Saludos,
Lázarus Surazal.

Entradas relacionadas

Perfil
prLázarus logo info
Carlos J. Peláez Rivas (Lázarus Surazal)
Graduado y Máster en Ingeniería Informática por la Universidad de Málaga. Actualmente trabajando como desarrollador de aplicaciones en Java usando Vaadin.
Apasionado de los videojuegos, la música y alguna que otra tecnología, siempre buscando cosas nuevas que aprender y hacer.
Más sobre mi...
Contacto
Notificaciones