【问题标题】:Deleting Folder which Contains Many Sub Folder and Sub Folder Contains Many More删除包含许多子文件夹和子文件夹包含更多的文件夹
【发布时间】:2015-09-14 03:20:40
【问题描述】:

我想删除一个文件夹(包含文件和子文件夹),它是包含许多文件和许多子文件夹等等的子文件夹。我用谷歌搜索但无法成功。这是我的代码。

private void TemporaryFiles_Load(object sender, EventArgs e)
        {
            bool b = IsAdministrator();
            if (b != true)
            {
                MessageBox.Show("You Should Login as Admininstartor to run this Software at it's fullest.");
            }
            string TargetFolder = @"C:\Users\user\AppData\Local\Temp";
            DeleteFolderAndFile(new DirectoryInfo(TargetFolder));
    }

static public void DeleteFolderFile(DirectoryInfo directoryInfo)
        { 
            try
            {
                foreach (FileInfo file in directoryInfo.GetFiles())
                {
                    try
                    {
                        file.Delete();
                    }
                    catch
                    {
                        //Do Nothing
                    }
                }
                foreach (DirectoryInfo Folder in directoryInfo.GetDirectories())
                {
                    try
                    {
                        Folder.Delete(true);
                    }
                    catch
                    {
                        //Do Nothing
                    }
                }
                foreach (DirectoryInfo subfolder in directoryInfo.GetDirectories())
                {
                    try
                    {
                        DeleteFolderAndFile(subfolder);
                    }
                    catch
                    {
                        //Do Nothing
                    }
                }
            }
            catch
            { 
                //Do Nothing
            }

        }

问题是只有主文件夹未被删除。

【问题讨论】:

标签: c#


【解决方案1】:

您应该使用带有布尔参数 true 的 DirectoryInfo 删除方法来递归删除。在父/目标文件夹上调用一次。

    DirectoryInfo dir = new DirectoryInfo(TargetFolder);

dir.Delete(true);

【讨论】:

  • 在删除文件夹时已使用 True,但只有主文件夹未删除。
  • 您的代码示例似乎没有在您的父文件夹上调用删除。您应该只需调用一次,父文件夹和所有文件/子文件夹都将被删除(具有适当的权限)
  • 这就是我要问的。如何删除父文件夹。
  • 我已更新以更具体地回答。在父文件夹上调用 delete 方法,就像在方法循环中调用子文件夹一样。您的方法将是不必要的。
  • Hildende 还在您的问题的评论中提供了正确答案。我没有代表在那里发表评论,但对@hildende 投了赞成票
猜你喜欢
  • 2012-07-24
  • 1970-01-01
  • 2013-02-15
  • 2017-05-20
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
相关资源
最近更新 更多