在我的程序中,我创建了一个长目录分支树.当我完成了这棵树的叶子上的某些文件时,我删除了它们,但最终我得到了很多空的父目录.我也想删除它们.但是,我不能只递归删除所有这些父目录,因为它们中的一些还有我无法删除的子项.
示例:C:\ MyProject\Project1\file1\file2\file3\file4\file5\document.txt
如果我删除document.txt,我还想删除路径中的所有其他空文件夹.但是,文件3中有一些东西(除了file4),所以我不能删除它或它上面的任何东西.所以在这种情况下,将删除file4和file5.
将根目录视为Project1.我不想删除上面的任何内容.
有没有人写过这样的东西?
基本上,我可以调用的东西,我可以指定我试图从树中删除的路径(下面的第一个arg),以及树的根(第二个arg).
DeleteEmptySubDirectoriesInPath("C:\MyProject\Project1\file1\file2\file3\file4\file5\",
"C:\MyProject\Project1");
Run Code Online (Sandbox Code Playgroud)
查看它的另一种方法是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;
}
Run Code Online (Sandbox Code Playgroud)
从感兴趣的目录开始; 只要没有文件而你没有到达"root",删除它并移动到其父目录.重复直到完成.
| 归档时间: |
|
| 查看次数: |
3638 次 |
| 最近记录: |