如何删除目录中的所有文件和文件夹?

34 浏览
0 Comments

如何删除目录中的所有文件和文件夹?

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

admin 更改状态以发布 2023年5月23日
0
0 Comments

是的,那是正确的方法。如果你想要创建一个"干净"(或者,我更愿意称之为"空")的函数,你可以创建一个扩展方法。

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

0
0 Comments

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()

0