0

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

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

4

3 回答 3

3

Directory.Delete将递归标志设置为 true,应该可以完成这项工作,无需先清空它们。

Directory.Delete(path, true);

我刚刚注意到您的标签指的是独立存储,在这种情况下,您需要枚举所有文件和文件夹并随时删除。 如何:删除隔离存储中的文件和目录

于 2013-07-29T17:15:47.970 回答
1

您可以尝试递归删除:

var path = Path.GetFullPath(@"C:\Temp\DeleteMe");
Directory.Delete(path,true); // true for recursive

如果您拥有适当的权限,这应该会删除包括文件在内的所有内容。

于 2013-07-29T17:18:23.847 回答
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);
    }
于 2013-07-29T17:26:04.310 回答