Eliminar una carpeta en la tarjeta SD

Intenté con File.delete() pero no funciona. ¿Cómo eliminar un directorio en la tarjeta SD?

Estoy trabajando en Android 2.1.

Debes tener todo el directorio vacío antes de borrar el directorio, mira aquí

En Android, también deberías tener los permisos adecuados: WRITE_EXTERNAL_STORAGE en tu manifiesto.

EDITAR: por conveniencia copié el código aquí, pero sigue siendo desde el enlace de arriba

 public static boolean deleteDirectory(File path) { if( path.exists() ) { File[] files = path.listFiles(); if (files == null) { return true; } for(int i=0; i 

https://stackoverflow.com/a/16411911/2397275

 uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" 

en el archivo AndroidManifest.xml

Los directorios deben estar vacíos antes de ser eliminados. Tienes que vaciar recursivamente y eliminar todos los directorios en el árbol:

 boolean delete(File file) { if (file.isDirectory()) { File[] files = file.listFiles(); if (files != null) for (File f : files) delete(f); } return file.delete(); } 

Actualizar:

Parece que file.isDirectory() == (file.listFiles() == null) , pero file.listFiles() logs ” fail readDirectory() errno=20 ” cuando file.isDirectory() == false .

funcionó bien para mí, espero que funcione para usted.

 File dir = new File(Environment.getExternalStorageDirectory()+"DirName"); if (dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { new File(dir, children[i]).delete(); } } 

Funcionó para mí:

 Add in manifest-  private boolean deleteDirectory(File path) { if( path.exists() ) { File[] files = path.listFiles(); if (files == null) { return false; } for(File file : files) { if(file.isDirectory()) { deleteDirectory(file); } else { file.delete(); } } } return path.exists()?path.delete():false; }