Подтвердить что ты не робот

Удалить папку из внутреннего хранилища в android?

Как удалить папку (содержащую некоторую папку и файл) из внутреннего хранилища? Папка имеет несколько деревьев ниже.

folder
|_________  C2 (folder)
             |________1 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif
             |________2 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif
             |________3 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif
             |________4 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif
             |________5 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif

|_________  C2.xml (file)

Я хочу удалить папку и содержать все файлы

fil.delete();

System.out.println("boolean =>" + fil.delete());

но выше код показывает false. Пожалуйста, помогите.

4b9b3361

Ответ 1

Проверьте это.

public void deleteRecursive(File fileOrDirectory) {

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

   fileOrDirectory.delete();
 }

для объяснения Как удалить всю папку и содержимое?

Ответ 2

Вы не можете удалить корневую папку, если подпапка содержит любые файлы. Поэтому для этого вам нужно сначала удалить каждый из подфайлов, а затем вы сможете удалить папку.

Ваш код действителен, я просто обновляю:

 boolean deleted = mypath.delete();

т. mypath - это ваш каталог файлов.

Ответ 3

Позвольте мне сказать вам, что вы не можете удалить корневую папку, потому что это системная папка. Когда вы удаляете его вручную по телефону, он удаляет содержимое этой папки, но не папку Root. Вы можете удалить его содержимое, используя следующий метод:

private void DeleteRecursive(File fileOrDirectory) {
    if (fileOrDirectory.isDirectory())
        for (File child : fileOrDirectory.listFiles())
        {
            child.delete();
            DeleteRecursive(child);
        }

    fileOrDirectory.delete();
}

Ответ 4

Использование Apache commons-io, которое является лишь одной строкой кода.

FileUtils.deleteDirectory(getAlbumStorageDir(directoryName));