我正在使用MVC ASP.NET 3.5,我正在尝试使用我在.NET 2.0中一直使用的标准.NET方法删除包含所有文件的文件夹。
我找到this,但第一个答案似乎不起作用 我试过这个
try
{
Directory.Delete(path, true);
}
catch (IOException)
{
Thread.Sleep(0);
Directory.Delete(path, true);
}
并且有效,但我无法理解为什么 有什么建议吗?
修改:我已获得权限,因为所有文件和子文件夹都已删除。但我得到了Exception“目录非空”的路径。如果我使用提供的代码,则无任何例外。
答案 0 :(得分:1)
即使使用资源管理器,有时也会显示此消息(至少对我而言)。如何先删除文件然后删除文件夹?
string[] files = Directory.GetFiles(some_path, "", SearchOption.AllDirectories);
foreach (string pathFile in files)
{
File.Delete(pathFile);
}
Directory.Delete(some_path);
如果您有子幻灯片,可以使用SearchOptions但如果没有,则使用
string[] files = Directory.GetFiles(some_path);
希望这有帮助。
修改强>
出现这个问题的原因很多(来自MS),但我认为主要是:因为文件夹已损坏或某些进程锁定它并阻止删除。
一个不优雅的解决方案可能是:首先删除文件,然后删除子文件夹,最后一步删除主文件夹。
答案 1 :(得分:1)
尝试使用它对我有用
File.SetAttributes(DownloaddirPath & "\" & directoryName, FileAttributes.Normal)
Directory.Delete(DownloaddirPath & "\" & directoryName, True)
答案 2 :(得分:0)
您是否有足够的权限删除该文件夹?另外,正如另一个问题所说,确保目录为空。