在Java/Unix中,我知道你不能删除包含某些内容的文件夹,我可以在没有递归的情况下删除,但这个简单的解决方案很好,但我只是看不出这是在哪里/何时删除实际文件?通过使用delete((函数。我清楚地看到它最后在实际文件夹上使用了delete((,但我不知道它是怎么回事,也不知道它什么时候在文件上调用delete((时,它只是得到了它们,当我觉得它应该调用delete((时它会进行递归调用???
我知道我错过了一些简单的东西,但它让我发疯了,我在哪里都找不到答案,任何帮助都将不胜感激。
boolean deleteDirectory(File directoryToBeDeleted) {
File[] allContents = directoryToBeDeleted.listFiles();
if (allContents != null) {
for (File file : allContents) {
deleteDirectory(file);
}
}
return directoryToBeDeleted.delete();
}
directoryToBeDeleted
并不总是一个目录。如果allContents == null
,那么directoryToBeDeleted
是文件,而不是目录,因为如果类型为File
的对象是文件而不是文件夹,则.listFiles()
返回null。