首页 > C# > 如何使用 C#,如何从目录中删除所有文件和文件夹,但仍保留根目录?

如何使用 C#,如何从目录中删除所有文件和文件夹,但仍保留根目录?

上一篇 下一篇

使用 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#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 202次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-08
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信模板 响应式 微信文章 微信素材 html5 企业网站 微信公众平台 自适应 微信图片 单页式简历模板
您可能会喜欢的其他模板