it-swarm.com.de

So löschen Sie alle Dateien und Ordner in einem Ordner auf Android

Ich verwende diesen Code, um alle Dateien zu löschen:

File root = new File("root path");
File[] Files = root.listFiles();
if(Files != null) {
    int j;
    for(j = 0; j < Files.length; j++) {
        System.out.println(Files[j].getAbsolutePath());
        System.out.println(Files[j].delete());
    }
}

Es wird false gelöscht, wenn Files[j] ein Ordner ist.

Ich möchte den Ordner und alle seine Unterdateien löschen.
Wie kann ich das ändern? 

23
brian

Am einfachsten wäre es, FileUtils.deleteDirectory aus der Apache Commons IO - Bibliothek zu verwenden.

File dir = new File("root path");
FileUtils.deleteDirectory(dir);

Beachten Sie, dass dies auch das enthaltende Verzeichnis löscht.

Fügen Sie diese Zeile in der Gradle-Datei hinzu, um Apache zu erhalten 

compile 'org.Apache.commons:commons-io:1.3.2'  
32
Lesleh

Überprüfen Sie auch diesen Link Ordner aus dem internen Speicher in Android löschen? .

void deleteRecursive(File fileOrDirectory) {

    if (fileOrDirectory.isDirectory())
        for (File child : fileOrDirectory.listFiles())
            deleteRecursive(child);

    fileOrDirectory.delete();

}
46
duggu
File file = new File("C:\\A\\B");        
    String[] myFiles;      

     myFiles = file.list();  
     for (int i=0; i<myFiles.length; i++) {  
         File myFile = new File(file, myFiles[i]);   
         myFile.delete();  
     }  
B.delete();// deleting directory.

Sie können eine Methode wie folgt schreiben: Löscht alle Dateien und Unterverzeichnisse unter dir. Gibt True zurück, wenn alle Löschungen erfolgreich waren. Wenn ein Löschvorgang fehlschlägt, beendet die Methode den Löschversuch und gibt false zurück.

public static boolean deleteDir(File dir) {
    if (dir.isDirectory()) {
        String[] children = dir.list();
        for (int i=0; i<children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }

    // The directory is now empty so delete it
    return dir.delete();
}
14
Achintya Jha

if storageDir ist ein Verzeichnis

for(File tempFile : storageDir.listFiles()) {
    tempFile.delete();
}
6
ergunkocak

Sie können dies überprüfen:

for(j = 0; j < Files.length; j++) {

    if(file.isDirectory()){
        for(File f : file.listFiles()){
        System.out.println(Files[j].getAbsolutePath());
        System.out.println(Files[j].delete());
    }
    else {
        System.out.println(Files[j].getAbsolutePath());
        System.out.println(Files[j].delete());
    }
}
3
MysticMagicϡ

sie können diesen Code zum Löschen von Dateien und Subdateien verwenden

public void deleteFile(File f){
String[] flist=f.list();
for(int i=0;i<flist.length;i++){
    System.out.println(" "+f.getAbsolutePath());
    File temp=new File(f.getAbsolutePath()+"/"+flist[i]);
    if(temp.isDirectory()){
       deleteFile(temp) ;
       temp.delete();
    }else{
    temp.delete();
    }
3
Imrank

In Ihrem Fall funktioniert dies einwandfrei http://commons.Apache.org/proper/commons-io/apidocs/org/Apache/commons/io/FileUtils.html#cleanDirectory(Java.io.File)

File dir = new File("dir_path");
if(dir.exists() && dir.isDirectory()) {
    FileUtils.cleanDirectory(dir);
}

Wenn Sie den Ordner selbst löschen möchten. (Es muss nicht leer sein). Kann auch für Dateien verwendet werden.

http://commons.Apache.org/proper/commons-io/apidocs/org/Apache/commons/io/FileUtils.html#forceDelete(Java.io.File)

File dir = new File("dir_path");
if(dir.exists()) {
    FileUtils.forceDelete(dir);
}
2
Shashank

Dieser Code funktioniert für mich. "imagesFolder" enthält einige Dateien und Ordner, die wiederum Dateien enthalten.

  if (imagesFolder.isDirectory())
  {
       String[] children = imagesFolder.list(); //Children=files+folders
       for (int i = 0; i < children.length; i++)
       {
         File file=new File(imagesFolder, children[i]);
         if(file.isDirectory())
         {
          String[] grandChildren = file.list(); //grandChildren=files in a folder
          for (int j = 0; j < grandChildren.length; j++)
          new File(file, grandChildren[j]).delete();
          file.delete();                        //Delete the folder as well
         }
         else
         file.delete();
      }
  }
0
Kittu

// Ordner und Inhalt löschen 

public static void DeleteFolder(File folder)
{
    try
    {
        FileUtils.deleteDirectory(folder);
    } catch (Exception ex)
    {
        Log.e(" Failed delete folder: ", ex.getMessage());
    }
}

// Nur Ordnerinhalt löschen

public static void DeleteFolderContents(File folder)
{
    try
    {
        FileUtils.cleanDirectory(folder);
    } catch (Exception ex)
    {
        Log.e(" Failed delete folder contents: ", ex.getMessage());
    }
}

Dokumente: org.Apache.commons.io.FileUtils.cleanDirectory

0
Gogu CelMare

# 1

File mFile = new File(Environment.getExternalStorageDirectory() + "/folder");
try {
    deleteFolder(mFile);
} catch (IOException e) {
    Toast.makeText(getContext(), "Unable to delete folder", Toast.LENGTH_SHORT).show();
}

public void deleteFolder(File folder) throws IOException {
    if (folder.isDirectory()) {
       for (File ct : folder.listFiles()){
            deleteFolder(ct);
       }
    }
    if (!folder.delete()) {
       throw new FileNotFoundException("Unable to delete: " + folder);
    }
}

# 2 (Root)

try {
    Process p = Runtime.getRuntime().exec("su");
    DataOutputStream outputStream = new DataOutputStream(p.getOutputStream());
    outputStream.writeBytes("rm -Rf /system/file.txt\n");
    outputStream.flush();
    p.waitFor();
    } catch (IOException | InterruptedException e) {
       Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
0
Lennoard Silva