如何删除目录中的所有文件和文件夹?使用C#,如何从目录中删除所有文件和文件夹,但仍保留根目录?
3 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
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()可以更有效。
这同样适用于EnumerateDirectories()
和GetDirectories()
。所以代码是:
foreach (FileInfo file in di.EnumerateFiles()){ file.Delete(); }foreach (DirectoryInfo dir in di.EnumerateDirectories()){ dir.Delete(true); }
出于这个问题的目的,没有理由使用GetFiles()
和GetDirectories()
手掌心
TA贡献1942条经验 获得超3个赞
是的,这是正确的方法。如果你想给自己一个“干净”(或者,我更喜欢称之为“清空”功能),你可以创建一个扩展方法。
public static void Empty(this System.IO.DirectoryInfo directory){ foreach(System.IO.FileInfo file in directory.GetFiles()) file.Delete(); foreach(System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true);}
这将允许你做类似的事情..
System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(@"C:\...");directory.Empty();
- 3 回答
- 0 关注
- 555 浏览
添加回答
举报
0/150
提交
取消