C# 如何删除所有文件,但保持目录结构不变?

C# 如何删除所有文件,但保持目录结构不变?,c#,C#,我想删除文件夹中的所有文件,删除其所有子文件夹中的所有文件,以及子文件夹等,但我不想删除文件夹本身 最简单的方法是什么?@Woot4Moo:不,因为这特别要求不要删除目录中的文件夹。为什么会有这么多反对票?@Jeff我想主要是因为他真的需要学习如何遍历文件,而且有很多关于如何做到这一点的信息。然而,这是一个相当过分的问题。这里的人只是喜欢抨击刚开始的程序员/SO用户,而不是帮助他们。@Jeff,这一答案也包含在帖子中。OP应该搜索,而不是用已经回答过的问题淹没网站。@Woot4Moo是的,我不同

我想删除文件夹中的所有文件,删除其所有子文件夹中的所有文件,以及子文件夹等,但我不想删除文件夹本身


最简单的方法是什么?

@Woot4Moo:不,因为这特别要求不要删除目录中的文件夹。为什么会有这么多反对票?@Jeff我想主要是因为他真的需要学习如何遍历文件,而且有很多关于如何做到这一点的信息。然而,这是一个相当过分的问题。这里的人只是喜欢抨击刚开始的程序员/SO用户,而不是帮助他们。@Jeff,这一答案也包含在帖子中。OP应该搜索,而不是用已经回答过的问题淹没网站。@Woot4Moo是的,我不同意这一点。我理解你投反对票的理由。只是在它投了几张反对票之后,我不会再继续把他们压下去了。我确信OP在两次否决后(我知道我在被否决时会这么做)已经感觉很愚蠢了,它们不需要10次。与其使用自己的递归函数手动遍历,不如使用library方法,它可以更有效地进行遍历(并且不使用递归,从而消除堆栈溢出异常的可能性),如果要继续删除文件,即使其中一个文件未能删除,也可以将try/catch移动到内部的
foreach
。不过,您可能希望记录失败并返回状态。@Servy是的,这是一个很好的解决方案,也许更好。不过我更愿意展示它是如何工作的。“我不喜欢神奇地工作的超高级抽象,我认为建议初级程序员使用它们不是一个好主意。@evanmcdonnal如果你的方法同样有效,那就好了。”。如果没有,最好建议使用库方法,并显示一个自定义的“相似”方法,仅用于学术目的。实际上,应该不鼓励在生产代码中使用像您这样的方法(原样)。+1最好使用内置的IMHO。
  static void DirSearch(string sDir)
   {
       try
       {
           foreach (string d in Directory.GetDirectories(sDir))
           {
               foreach (string f in Directory.GetFiles(d))
               {
                   //Delete files, but not directories
                   File.Delete(f);
               }
               //Recursively call this method, so that each directory
               //in the structure is wiped
               DirSearch(d);
           }
       }
       catch (System.Exception excpt)
       {
           Console.WriteLine(excpt.Message);
       }
   }
foreach (var file in Directory.EnumerateFiles("path", "*", System.IO.SearchOption.AllDirectories))
{
    //TODO consider error handling
    File.Delete(file);
}