¿Cómo eliminar una carpeta completa y su contenido?

Resuelto Beginner asked hace 54 años • 25 respuestas

Quiero que los usuarios de mi aplicación puedan eliminar la carpeta DCIM (que se encuentra en la tarjeta SD y contiene subcarpetas).

¿Es esto posible? Si es así, ¿cómo?

Beginner avatar Jan 01 '70 08:01 Beginner
Aceptado

Puede eliminar archivos y carpetas de forma recursiva de esta manera:

void deleteRecursive(File fileOrDirectory) {
    if (fileOrDirectory.isDirectory())
        for (File child : fileOrDirectory.listFiles())
            deleteRecursive(child);

    fileOrDirectory.delete();
}
teedyay avatar Jun 21 '2011 13:06 teedyay

Déjame decirte lo primero que no puedes eliminar la carpeta DCIM porque es una carpeta del sistema. Al eliminarlo manualmente en el teléfono, se eliminará el contenido de esa carpeta, pero no la carpeta DCIM. Puede eliminar su contenido utilizando el método siguiente:

Actualizado según comentarios.

File dir = new File(Environment.getExternalStorageDirectory()+"Dir_name_here"); 
if (dir.isDirectory()) 
{
    String[] children = dir.list();
    for (int i = 0; i < children.length; i++)
    {
       new File(dir, children[i]).delete();
    }
}
chikka.anddev avatar Feb 09 '2011 10:02 chikka.anddev

Podemos usar los argumentos de la línea de comando para eliminar una carpeta completa y su contenido.

public static void deleteFiles(String path) {

    File file = new File(path);

    if (file.exists()) {
        String deleteCmd = "rm -r " + path;
        Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec(deleteCmd);
        } catch (IOException e) { }
    }
}

Uso de ejemplo del código anterior:

deleteFiles("/sdcard/uploads/");
xinaxino avatar Mar 16 '2011 07:03 xinaxino