如何从内部存储中删除文件夹(包含一些文件夹和文件)?文件夹下面有一些树。
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。请帮忙。
答案 0 :(得分:65)
检查一下。
public void deleteRecursive(File fileOrDirectory) {
if (fileOrDirectory.isDirectory()) {
for (File child : fileOrDirectory.listFiles()) {
deleteRecursive(child);
}
}
fileOrDirectory.delete();
}
答案 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));