删除目录中的目录

时间:2013-07-29 17:06:24

标签: c# windows-phone-7 windows-phone-8 isolatedstorage directory

我知道如果你想要删除一个目录,你必须先删除它的所有文件。

但是,如果要删除包含空子目录的目录,是否必须先删除这些子目录?或者你可以继续删除主目录吗?

3 个答案:

答案 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);
    }