¿Cómo eliminar una carpeta completa y su contenido?
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?
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();
}
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();
}
}
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/");