【发布时间】:2014-03-20 00:01:01
【问题描述】:
在我的程序中,我创建了一个长分支的目录树。当我处理完这棵树的叶子上的某些文件时,我会删除它们,但最终会得到很多空的父目录。我也想删除这些。但是,我不能递归地删除所有这些父目录,因为其中一些有我还不能删除的子目录。
示例: C:\MyProject\Project1\file1\file2\file3\file4\file5\document.txt
如果我删除 document.txt,我还想删除路径中的所有其他空文件夹。但是,文件 3 中有一些东西(除了文件 4),所以我不能删除它或它上面的任何东西。所以在这种情况下,file4 和 file5 将被删除。
假设根目录为 Project1。我不想删除上面的任何内容。
有没有人为此写过东西?
基本上,我可以在其中指定要从树中删除的路径(下面的第一个 arg)以及树的根(第二个 arg)。
DeleteEmptySubDirectoriesInPath("C:\MyProject\Project1\file1\file2\file3\file4\file5\",
"C:\MyProject\Project1");
另一种看待它的方式是 Directory.CreateDirectory 的逆。这是我用来生成这些长分支的函数。现在我需要在完成后移除它们,而不会打扰其他任何东西。
【问题讨论】:
-
@NielW 确保在@DeveloperGuo 链接的问题的cmets 中使用
EnumerateFileSystemEntries建议。 -
就是这样。我实际上是先看那里的。这种方法的问题是它是自上而下的,并且会删除不在我要删除的路径中的其他空目录。
标签: c#