在JAVA I/O中递归删除文件夹中的文件



在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。

最新更新