如何删除目录中的所有文件和文件夹?
使用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()
。
是的,这是正确的做法。 如果您希望给自己一个“清洁”(或者,因为我更愿意称它为“空”功能),您可以创建一个扩展方法。
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();
}
}
链接地址: http://www.djcxy.com/p/19195.html
上一篇: How to delete all files and folders in a directory?
下一篇: Android Sqlite FTS3 how to select words that starts with?