我知道如果你想要删除一个目录,你必须先删除它的所有文件。
但是,如果要删除包含空子目录的目录,是否必须先删除这些子目录?或者你可以继续删除主目录吗?
答案 0 :(得分:3)
Directory.Delete将recurse标志设置为true,应该完成工作,不需要先清空它们。
Directory.Delete(path, true);
我刚刚注意到你的标签是指IsolatedStorage,在这种情况下你需要枚举所有的文件和文件夹并随时删除。 How to: Delete Files and Directories in Isolated Storage
答案 1 :(得分:1)
您可以尝试递归删除:
var path = Path.GetFullPath(@"C:\Temp\DeleteMe");
Directory.Delete(path,true); // true for recursive
如果您具有适当的权限,则应删除包括文件在内的所有内容。
答案 2 :(得分:0)
为什么要在删除它时检查它是否为空。
只有在确定目录中没有任何Directory.Delete(yourpath,true)
文件时,才能使用readonly
方法。否则会抛出exception
。相反,您可以使用自己的递归方法,在删除之前首先将文件标记为正常。
public static void DeleteDirectory(string target_dir)
{
string[] files = Directory.GetFiles(target_dir);
string[] dirs = Directory.GetDirectories(target_dir);
foreach (string file in files)
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}
foreach (string dir in dirs)
{
DeleteDirectory(dir);
}
Directory.Delete(target_dir, false);
}