我有一个基于 GUID 构建图像文件夹的大量图像的体系结构:
C:\AdPictures\7e\42\1a\dc-7\3b\7-\4e\c2-9\ee\f-\f2\4c\7d\4a\32\14\
我需要进行递归删除,直到从文件夹“14”到目录“7e”的文件夹不为空(“AdPictures”文件夹需要保留,因为它是根目录)。
我发现:
Directory.Delete(folderPath, true);
但使用时它会删除所有内容。
我如何实现一种从底部开始删除所有空目录并在找到树上的非空目录后停止的方法?
我的解决方案应该使用递归。
最佳答案
这里是递归的方法。
DirectoryInfo dir = new DirectoryInfo(folderPath);
DeleteFolderIfEmpty(dir);
public void DeleteFolderIfEmpty(DirectoryInfo dir){
if(dir.EnumerateFiles().Any() || dir.EnumerateDirectories().Any())
return;
DirectoryInfo parent = dir.Parent;
dir.Delete();
// Climb up to the parent
DeleteFolderIfEmpty(parent);
}
防止删除根目录
DirectoryInfo dir = new DirectoryInfo(folderPath);
DeleteFolderIfEmpty(dir);
public void DeleteFolderIfEmpty(DirectoryInfo dir){
if(dir.EnumerateFiles().Any() || dir.EnumerateDirectories().Any())
return;
if(dir.FullName == @"c:\folder\root")
return;
DirectoryInfo parent = dir.Parent;
dir.Delete();
// Climb up to the parent
DeleteFolderIfEmpty(parent);
}
关于c# - 递归删除空文件夹,直到在目录树中找到非空目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22570935/