从android内部存储中删除文件夹?

时间:2012-11-16 05:22:32

标签: android android-storage

如何从内部存储中删除文件夹(包含一些文件夹和文件)?文件夹下面有一些树。

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。请帮忙。

4 个答案:

答案 0 :(得分:65)

检查一下。

public void deleteRecursive(File fileOrDirectory) {

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

   fileOrDirectory.delete();
 }

解释How to delete a whole folder and content?

答案 1 :(得分:7)

如果子文件夹包含任何文件,则无法删除根文件夹。因此,您必须先删除每个子文件,然后才能删除该文件夹。

您的代码有效,我只是更新如下:

 boolean deleted = mypath.delete();

即。 mypath是您的文件目录。

答案 2 :(得分:2)

让我告诉你,首先你无法删除Rootfolder,因为它是一个系统文件夹。当您在手机上手动删除它时,它将删除该文件夹的内容,但不删除Root文件夹。您可以使用以下方法删除其内容:

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

    fileOrDirectory.delete();
}

答案 3 :(得分:0)

使用Apache commons-io,这只是一行代码。

FileUtils.deleteDirectory(getAlbumStorageDir(directoryName));