【问题标题】:c# deleting empty folderc#删除空文件夹
【发布时间】: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#


【解决方案1】:

通过文件资源管理器Run as Administrator 右键单击​​应用程序来运行程序(或者如果在 Visual Studio 中运行,则在 Visual Studio 中运行)。

Visual Studio 在启动时不会以管理员身份运行。必须以提升的权限运行它才能对受保护的文件夹执行此类操作或访问端口,例如从 Visual Studio 运行 IE Express。

【讨论】:

  • 我尝试以管理员身份运行,但没有帮助,我做了一个获取文件以确保它确实是空的,并且我只是有代码尝试到文件夹以确保存在没有打开的句柄,我仍然被拒绝访问
猜你喜欢
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2010-09-23
  • 2015-12-25
  • 1970-01-01
相关资源
最近更新 更多