我有一个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
。
出现此错误的原因是什么?我该如何解决?
答案 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);
}
}