Intenté File.delete()
pero no funciona. ¿Cómo eliminar un directorio en la tarjeta SD?Eliminar una carpeta en la tarjeta SD
Estoy trabajando en Android 2.1.
Intenté File.delete()
pero no funciona. ¿Cómo eliminar un directorio en la tarjeta SD?Eliminar una carpeta en la tarjeta SD
Estoy trabajando en Android 2.1.
usted tiene que tener todo el directorio vacío antes de eliminar el directorio en sí, ver here
En Android, usted debe tener los permisos adecuados, así - WRITE_EXTERNAL_STORAGE
en su manifiesto.
EDIT: por conveniencia He copiado el código aquí, pero todavía es desde el enlace anterior
public static boolean deleteDirectory(File path) {
if(path.exists()) {
File[] files = path.listFiles();
if (files == null) {
return true;
}
for(int i=0; i<files.length; i++) {
if(files[i].isDirectory()) {
deleteDirectory(files[i]);
}
else {
files[i].delete();
}
}
}
return(path.delete());
}
Intenté eliminar archivos en la carpeta, pero Logcat muestra 'no se puede desvincular '/geo1.xml': sistema de archivos de solo lectura (errno = 30)'. Agregué el permiso 'WRITE_EXTERNAL_STORAGE' en manifiesto. – Greenhorn
Creo que '/ geo1.xml' no está en la tarjeta SD, sino en la raíz ('/'). ¿Estás seguro de que estás apuntando al archivo correcto? – MByD
No, '/ geo.xml' estaba en la carpeta que estaba intentando eliminar, pero me faltaba algo en el código. Está funcionando bien ahora. Gracias. :) – Greenhorn
https://stackoverflow.com/a/16411911/2397275
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
en AndroidManifest.xml presentar
directorios deben estar vacíos antes de que sean eliminados. Tienes que recurrentemente vacío 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();
}
Actualización:
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();
}
}
dir.list puede devolver nulo, por lo tanto, invocando children.length en su ciclo sin verificar si children es nulo o no puede lanzar una excepción. –
que trabajó para mí:
Add in manifest-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
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;
}
duplicado posible de [? ¿Cómo suprimir toda una carpeta y contenido] (https://stackoverflow.com/questions/4943629/how-to-delete -a-whole-folder-and-content) – bummi