J'ai essayé File.delete()
mais ça ne marche pas. Comment supprimer un répertoire sur la carte SD?
Je travaille sur Android 2.1.
Vous devez avoir tout le répertoire vide avant de supprimer le répertoire lui-même, voir ici
Sous Android, vous devez également disposer des autorisations appropriées - WRITE_EXTERNAL_STORAGE
dans votre manifeste.
EDIT: pour plus de commodité, j'ai copié le code ici, mais c'est toujours à partir du lien ci-dessus
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() );
}
Les répertoires doivent être vides avant d'être supprimés. Vous devez vider récursivement et supprimer tous les répertoires de l'arborescence:
boolean delete(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null)
for (File f : files) delete(f);
}
return file.delete();
}
Mettre à jour:
Cela ressemble à file.isDirectory() == (file.listFiles() == null)
, mais file.listFiles()
enregistre "fail readDirectory() errno=20
" lorsque file.isDirectory() == false
.
https://stackoverflow.com/a/16411911/2397275
uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"
dans le fichier AndroidManifest.xml
Cela a fonctionné pour moi:
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;
}
cela a bien fonctionné pour moi, j'espère que cela fonctionnera pour vous.
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();
}
}