//多线程操作需要先加锁
lock(this){
//层次遍历所有子文件夹
string[] dirs = Directory.GetDirectories("文件路径", "", SearchOption.AllDirectories);
//为了先删除子目录再删除父目录,需要让子目录排在父目录前面,所以倒序文件列表
Array.Reverse(dirs);
foreach (var dir in dirs)
{
var info = new DirectoryInfo(dir);
//检查是否包含子文件夹及文件
if (info.GetFileSystemInfos().Length == 0)
{
//由于子文件夹或文件随时会增加,不强制删除子文件及子文件夹
info.Delete();
}
}
}