wake-up-neo.com

Löschen Sie einen Ordner auf der SD-Karte

Ich habe File.delete() ausprobiert, aber es funktioniert nicht. Wie lösche ich ein Verzeichnis auf der SD-Karte?

Ich arbeite an Android 2.1.

32
Greenhorn

Sie müssen das gesamte Verzeichnis leer haben, bevor Sie das Verzeichnis selbst löschen können, siehe hier

In Android sollten Sie auch die richtigen Berechtigungen haben - WRITE_EXTERNAL_STORAGE in Ihrem Manifest.

EDIT: Der Einfachheit halber habe ich den Code hier kopiert, aber er stammt immer noch vom Link oben.

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() );
  }
100
MByD

Verzeichnisse müssen leer sein, bevor sie gelöscht werden. Sie müssen alle Verzeichnisse im Baum rekursiv leeren und löschen:

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

Update:

Es scheint wie file.isDirectory() == (file.listFiles() == null), aber file.listFiles() protokolliert "fail readDirectory() errno=20", wenn file.isDirectory() == false.

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

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

in der Datei AndroidManifest.xml

1
Codeerror

Es hat für mich funktioniert:

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;
    }
0
Deven

es hat gut für mich funktioniert, ich hoffe es funktioniert für Sie.

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();
        }
    }
0
Murali Mohan