Невозможно удалить каталог после его создания - PullRequest
0 голосов
/ 18 марта 2011

Я пытаюсь последовательно создать, а затем удалить каталог.Однако, похоже, что удаление каталога не работает.

Кто-нибудь имеет представление о том, почему?Это из-за того, что файловая система не обновляется в Java?

public boolean createDirectory(File file) {
    // Delete Directory if alreday exists
    if (file.exists()) {
        deleteDirectory(file);
    }
    boolean status = file.mkdirs();
    if (status) {
        System.out.println(" Successfull of creating Directory " + file.getPath());
    }
    return status;
}

public boolean deleteDirectory(File dir) {
    if (dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            File delFile = new File(dir, children[i]);
            if (!delFile.exists()) {
                System.out.println("Cannot find directory to delete" + delFile.getPath());
                return false;
            }
            boolean success = deleteDirectory(delFile);
            System.out.println(delFile + ": success? " + success);
            if (!success) {
                System.out.println("failure during delete directory" + delFile.getPath());
                return false;
            }
        }
        // The directory is now empty so now it can be smoked
        return dir.delete();
    }
}

Ответы [ 2 ]

3 голосов
/ 18 марта 2011

Если это выполняется в Windows, то обычно проблема заключается в том, что Windows не удаляет каталог, если какой-либо процесс его «использует», т. Е. Файл из этого каталога (или один из его дочерних элементов) открыт,или этот каталог (или один из его дочерних элементов) является текущим рабочим каталогом.

1 голос
/ 18 марта 2011

Вместо того, чтобы пытаться создать свой собственный метод рекурсивного удаления, я бы предложил использовать тот, который уже хорошо известен.Если можете, используйте Apache Commons IO FileUtils.deleteDirectory (java.io.File) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...