我有这部分代码:递归删除目录
public static void delete(File f) throws IOException
{
if (f.isDirectory())
{
for (File c : f.listFiles())
{
delete(c);
}
}
else if (!f.delete())
{
throw new FileNotFoundException("Failed to delete file: " + f);
}
}
public static void traverseDelete(File directory) throws FileNotFoundException, InterruptedException
{
//Get all files in directory
File[] files = directory.listFiles();
for (File file : files)
{
if (file.getName().equalsIgnoreCase("word"))
{
boolean containsMedia = false;
File[] filesInWordFolder = file.listFiles();
for (File file2 : filesInWordFolder)
{
if (file2.getName().contains("media"))
{
containsMedia = true;
break;
}
}
if (containsMedia == false)
{
try
{
delete(file.getParentFile());
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
else if (file.isDirectory())
{
traverseDelete(file);
}
}
}
对不起,我没有评论的,但它是不言自明的,我想。本质上,代码应该做的是遍历给定目录中的一组文件,如果它遇到一个名为“word”的目录,那么它应该列出word的内容,然后如果名为“media”的目录没有存在,递归地删除“word”的父目录下的所有内容。
我主要关心来源于此条件:
if(!filesInWordFolder.toString().contains("media"))
是正确的方式说,如果该数组在文件中不包含“图像”的实例,继续和删除?
我编辑了我原来的帖子,并按照您的示例包含了我的新traverseDelete方法,但它仍然没有正确删除文件夹。有任何想法吗? –
你是否收到任何错误? – Kal
不,没有错误。 :/ –