使用System.IO.Directory.Delete删除目录

时间:2013-06-06 09:10:37

标签: c# .net file io directory

我有一个c#应用程序,我必须删除一个目录:

 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

出现此错误的原因是什么?我该如何解决?

6 个答案:

答案 0 :(得分:5)

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

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

public static void Delete(
    string path,
    bool recursive
)

答案 1 :(得分:2)

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

但是,如果您无权删除任何文件或文件夹(并且只读文件也会导致问题),则仍然会失败。

答案 2 :(得分:2)

尝试

Directory.Delete(path, true);

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

  

如果删除路径中的目录,子目录和文件,则为true;   否则,错误。

答案 3 :(得分:2)

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

Directory.Delete(path, true);

答案 4 :(得分:1)

使用

Directory.Delete(@"c:\somedirectory", true);

答案 5 :(得分: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);
        }
    }