gpt4 book ai didi

c# - 删除指定路径下的所有空目录

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:02 25 4
gpt4 key购买 nike

在我的程序中,我创建了一个长分支目录树。当我处理完这棵树的叶子上的某些文件后,我删除了它们,但最终得到了很多空的父目录。我也想删除这些。但是,我不能只是递归地删除所有这些父目录,因为其中一些具有我无法删除的子目录。

例子: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 的逆过程。这是我用来生成这些长分支的函数。现在我需要在完成后移除它们,而不打扰其他任何东西。

最佳答案

一点点迭代就可以了:

var di = new DirectoryInfo(@"C:\MyProject\Project1\file1\file2\file3\file4\");
var root = @"C:\MyProject\Project1"; // no trailing slash!
while (di.FullName != root
&& !di.EnumerateFiles().Any()
&& !di.EnumerateDirectories().Any())
{
di.Delete();
di = di.Parent;
}

从感兴趣的目录开始;只要没有文件并且您还没有到达“根目录”,就将其删除并移至其父目录。重复直到完成。

关于c# - 删除指定路径下的所有空目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22520761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com