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);
}