Java Delete Empty Directory deleteEmptyDirectoryRecursive(File directory)

Here you can find the source of deleteEmptyDirectoryRecursive(File directory)

Description

delete Empty Directory Recursive

License

Open Source License

Declaration

public static boolean deleteEmptyDirectoryRecursive(File directory) 

Method Source Code


//package com.java2s;
/*/*  w  ww.  j  av  a  2 s . c o m*/
 * Created by Angel Leon (@gubatron), Alden Torres (aldenml)
 * Copyright (c) 2011, 2012, FrostWire(R). All rights reserved.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

import java.io.File;
import java.io.IOException;

public class Main {
    public static boolean deleteEmptyDirectoryRecursive(File directory) {
        // make sure we only delete canonical children of the parent file we
        // wish to delete. I have a hunch this might be an issue on OSX and
        // Linux under certain circumstances.
        // If anyone can test whether this really happens (possibly related to
        // symlinks), I would much appreciate it.
        String canonicalParent;
        try {
            canonicalParent = directory.getCanonicalPath();
        } catch (IOException ioe) {
            return false;
        }

        if (!directory.isDirectory()) {
            return false;
        }

        boolean canDelete = true;

        File[] files = directory.listFiles();
        for (int i = 0; i < files.length; i++) {
            try {
                if (!files[i].getCanonicalPath().startsWith(canonicalParent))
                    continue;
            } catch (IOException ioe) {
                canDelete = false;
            }

            if (!deleteEmptyDirectoryRecursive(files[i])) {
                canDelete = false;
            }
        }

        return canDelete ? directory.delete() : false;
    }
}

Related

  1. deleteEmptyChildren(java.io.File file)
  2. deleteEmptyDir(File directory)
  3. deleteEmptyDir(File file)
  4. deleteEmptyDirectories(List dirs)
  5. deleteEmptyDirectory(File fileOrDirectory)
  6. deleteEmptyDirectoryRecursive(File directory)
  7. deleteEmptyDirs(File dir)
  8. deleteEmptyDirs(File dir)
  9. deleteEmptyFiles(String p)