26

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

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());

但上面的代码显示错误。请帮忙。

4

4 回答 4

86

看一下这个。

public void deleteRecursive(File fileOrDirectory) {

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

   fileOrDirectory.delete();
 }

解释如何删除整个文件夹和内容?

于 2012-11-16T05:49:39.623 回答
8

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

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

 boolean deleted = mypath.delete();

IE。mypath是您的文件目录。

于 2012-11-16T05:28:48.613 回答
2

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

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

    fileOrDirectory.delete();
}
于 2012-11-16T05:29:45.643 回答
0

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

FileUtils.deleteDirectory(getAlbumStorageDir(directoryName));
于 2017-11-17T10:27:34.130 回答