使用C#,如何从目录中删除所有文件和文件夹,但仍保留根目录?
System.IO.DirectoryInfo di = new DirectoryInfo("YourPath"); foreach (FileInfo file in di.GetFiles()) { file.Delete(); } foreach (DirectoryInfo dir in di.GetDirectories()) { dir.Delete(true); }
如果您的目录可能包含许多文件,EnumerateFiles()则效率要高于GetFiles(),因为使用EnumerateFiles()时可以在返回GetFiles()整个集合之前开始枚举,而不是在开始枚举之前需要在内存中加载整个集合。在这里看到这个报价:
EnumerateFiles()
GetFiles()
因此,当您处理许多文件和目录时,EnumerateFiles()可能会更高效。
EnumerateDirectories()和和相同GetDirectories()。因此,代码将是:
EnumerateDirectories()
GetDirectories()
foreach (FileInfo file in di.EnumerateFiles()) { file.Delete(); } foreach (DirectoryInfo dir in di.EnumerateDirectories()) { dir.Delete(true); }
出于这个问题的目的,实际上没有理由使用GetFiles()和GetDirectories()。