使用 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() 可以更有效率。
这同样适用于 和 。所以代码将是:EnumerateDirectories()
GetDirectories()
foreach (FileInfo file in di.EnumerateFiles())
{
file.Delete();
}
foreach (DirectoryInfo dir in di.EnumerateDirectories())
{
dir.Delete(true);
}
就这个问题而言,确实没有理由使用 和 .GetFiles()
GetDirectories()
网友回答:
是的,这是正确的方法。如果你想给自己一个“Clean”(或者,我更喜欢称之为“Empty”函数),你可以创建一个扩展方法。
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();
网友回答:
以下代码将以递归方式清除文件夹:
private void clearFolder(string FolderName)
{
DirectoryInfo dir = new DirectoryInfo(FolderName);
foreach(FileInfo fi in dir.GetFiles())
{
fi.Delete();
}
foreach (DirectoryInfo di in dir.GetDirectories())
{
clearFolder(di.FullName);
di.Delete();
}
}
模板简介:该模板名称为【如何使用 C#,如何从目录中删除所有文件和文件夹,但仍保留根目录?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。