Java Delete File Recursively deleteRecursive(File dir)

Here you can find the source of deleteRecursive(File dir)

Description

Loescht ein Verzeichnis rekursiv.

License

Open Source License

Parameter

Parameter Description
dir das rekursiv zu loeschende Verzeichnis.

Exception

Parameter Description
IOException wenn beim Loeschen ein Fehler auftrat.

Return

true, wenn das Verzeichnis korrekt geloescht werden konnte.

Declaration

public static boolean deleteRecursive(File dir) throws IOException 

Method Source Code


//package com.java2s;
import java.io.File;
import java.io.IOException;

public class Main {
    /**//from ww w.j  a  v  a  2  s  .  c o m
     * Loescht ein Verzeichnis rekursiv.
     * @param dir das rekursiv zu loeschende Verzeichnis.
     * @return true, wenn das Verzeichnis korrekt geloescht werden konnte.
     * @throws IOException wenn beim Loeschen ein Fehler auftrat.
     */
    public static boolean deleteRecursive(File dir) throws IOException {
        File candir = dir.getCanonicalFile();

        // Wen sich der kanonische Pfad vom absoluten unterscheidet,
        // ist es ein Symlink. Es waere viel zu gefaehrlich, dem zu folgen
        if (!candir.equals(dir.getAbsoluteFile()))
            return false;

        // Rekursion
        File[] files = candir.listFiles();
        if (files != null) {
            for (int i = 0; i < files.length; ++i) {
                // Wenn es sich so loeschen laesst, war es eine Datei,
                // ein leeres Verzeichnis oder ein Symlink. Im letzteren
                // Fall haben wir nur den Symlink geloescht, sind ihm
                // jedoch nicht gefolgt
                boolean deleted = files[i].delete();
                if (!deleted) {
                    if (files[i].isDirectory())
                        deleteRecursive(files[i]); // Scheint ein Verzeichnis zu sein?
                }
            }
        }

        // So, fertig. Verzeichnis selbst kann geloescht werden
        return dir.delete();
    }
}

Related

  1. deleteR(File dir)
  2. deleteRec(File f)
  3. deleteRecursive(File dir)
  4. deleteRecursive(File dir)
  5. deleteRecursive(File dir)
  6. deleteRecursive(File dir)