1

我有 ac# 应用程序,我必须在其中删除一个目录:

 if (buttonName == "Supprimer projet")
            {
                if (url != null)
                {
                    proj.DeleteDirectory(proj.GetProjectsId(url));
                    var path = Path.Combine(@"C:\Projets", url);
                    try
                    {
                        Directory.Delete(path);
                    }
                    catch { }
                    return RedirectToAction("Gestion", "Admin");
                }
            }

但我有这个例外the directory is not empty \r\n

这个错误的原因是什么?我该如何解决?

4

6 回答 6

5

使用接受布尔值作为第二个参数并传递 true 的重载。这将递归删除目录中的所有文件和目录。请参阅http://msdn.microsoft.com/en-us/library/fxeahc5f.aspx

Directory.Delete 方法(字符串,布尔值)

public static void Delete(
    string path,
    bool recursive
)
于 2013-06-06T09:15:51.870 回答
2

您可以使用Directory.Delete(dirname, true)递归删除目录。

但是,如果您无权删除任何文件或文件夹(只读文件也会给您带来问题),这仍然会失败。

于 2013-06-06T09:16:43.737 回答
2

尝试

Directory.Delete(path, true);

Directory.Delete Method,第二个布尔标志是

true 删除路径中的目录、子目录和文件;否则为假。

于 2013-06-06T09:17:27.693 回答
2

使用 Directory.Delete 版本,将第二个布尔参数(递归)设置为 true

Directory.Delete(path, true);
于 2013-06-06T09:17:50.177 回答
1

使用目录名称调用此函数。它将删除该目录,包括内容。

static void DirDelete(string sDir)
    {
        try
        {
            foreach (string d in Directory.GetDirectories(sDir))
            {
                foreach (string f in Directory.GetFiles(d))
                {
                    File.Delete(f);
                }
                DirDelete(d);
                Directory.Delete(d);
            }
            Directory.Delete(sDir);
        }
        catch (System.Exception excpt)
        {
            Console.WriteLine(excpt.Message);
        }
    }
于 2013-06-06T09:33:03.913 回答
1

利用

Directory.Delete(@"c:\somedirectory", true);
于 2013-06-06T09:22:37.847 回答