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

本文关键字:Delete 删除目录 Directory IO System 使用 | 更新日期: 2023-09-27 18:17:06

我有一个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

这个错误的原因是什么?我怎样才能修好它?

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

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

目录。删除方法(String, Boolean):

public static void Delete(
    string path,
    bool recursive
)

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

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

Try

Directory.Delete(path, true);

从目录中。Delete方法,第二个bool标志为

true删除path中的目录、子目录和文件;否则,假的。

使用目录的版本。删除第二个bool参数(递归)设置为true

Directory.Delete(path, true);

use

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

使用dir名称调用此函数。它将删除包含内容的目录。

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