【发布时间】:2020-01-31 16:24:08
【问题描述】:
我有以下代码,我正在尝试删除它大部分时间都可以使用的文件夹,但偶尔我会收到 IOException 并且 Visual Studio 说“访问被拒绝”路径存在并且文件夹说它是 空的,并且没有子文件夹,但我无法使用以下代码将其删除。任何建议为什么这会在大多数情况下但并非总是有效以及如何解决它
if ( Directory.Exist( dir2 + "\\Inv")
{
System.IO.DirectoryInfo dirinv = new System.IO.DirectoryInfo(dir2 + "\\Inv");
setAttributesNormal(dirinv);
try
{
Directory.Delete(dir2 + "\\Inv", true);
}
catch (IOException)
{
Directory.Delete(dir2 + "\\Inv", true);
}
catch (UnauthorizedAccessException)
{
Directory.Delete(dir2 + "\\Inv", true);
}
}
}
private void setAttributesNormal(DirectoryInfo dir)
{
foreach (var subDir in dir.GetDirectories())
setAttributesNormal(subDir);
foreach (var file in dir.GetFiles())
{
file.Attributes = FileAttributes.Normal;
}
}
【问题讨论】:
-
这能回答你的问题吗? C# Remove all empty subdirectories
-
听起来您的应用程序没有删除它的权限。您是否尝试过在管理员模式下运行它/Visual Studio?
-
当防病毒软件妨碍您时,如果您刚刚对文件夹执行了其他操作(例如删除其中的文件),我已经看到了这种情况
-
如果您之前在您的应用程序中打开了该文件夹中的文件,请确保
Close/Dispose这些文件 - 以便释放所有文件句柄。否则,文件夹可能会因此被“锁定”。 -
如果您在该文件夹中打开了命令提示符窗口,则即使该文件夹为空,也无法删除该文件夹。这就像获得了移除地毯的许可,但如果有人站在上面,您将很难过。
标签: c#