【问题标题】:Deleting directories inside directories删除目录内的目录
【发布时间】:2013-07-29 17:06:23
【问题描述】:

我知道如果你想删除一个目录,你必须先删除它的所有文件。

但是如果你想删除一个包含空子目录的目录,你必须先删除那些子目录吗?或者你可以直接删除主目录吗?

【问题讨论】:

  • 老实说,如果您尝试一下而不是在这里询问并等待答案,那会快很多 。只需使用测试文件夹创建一个测试项目并执行此操作,您会很快看到。

标签: c# windows-phone-7 windows-phone-8 isolatedstorage directory


【解决方案1】:

Directory.Delete 将递归标志设置为 true,应该可以完成工作,无需先清空它们。

Directory.Delete(path, true);

我刚刚注意到您的标签引用了独立存储,在这种情况下,您需要枚举所有文件和文件夹并随时删除。 How to: Delete Files and Directories in Isolated Storage

【讨论】:

    【解决方案2】:

    你可以尝试递归删除:

    var path = Path.GetFullPath(@"C:\Temp\DeleteMe");
    Directory.Delete(path,true); // true for recursive
    

    如果您拥有适当的权限,这应该会删除所有内容,包括文件。

    【讨论】:

      【解决方案3】:

      既然要删除它,为什么还要检查它是否为空。

      只有在确定目录中没有任何readonly 文件时,才能使用Directory.Delete(yourpath,true) 方法。否则它会抛出一个exception。相反,您可以使用自己的递归方法,这样在删除之前首先将文件标记为正常。

      public static void DeleteDirectory(string target_dir)
          {
              string[] files = Directory.GetFiles(target_dir);
              string[] dirs = Directory.GetDirectories(target_dir);
      
              foreach (string file in files)
              {
                  File.SetAttributes(file, FileAttributes.Normal);
                  File.Delete(file);
              }
      
              foreach (string dir in dirs)
              {
                  DeleteDirectory(dir);
              }
      
              Directory.Delete(target_dir, false);
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-13
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多