使用通配符删除多个文件

本文关键字:文件 删除 通配符 | 更新日期: 2023-09-27 18:19:51

你知道在linux中这很容易,但我不知道如何在Windows上的C#中做到这一点。我想删除所有与通配符f*.txt匹配的文件。我该怎么做?

使用通配符删除多个文件

您可以使用DirectoryInfo.EnumerateFiles函数:

var dir = new DirectoryInfo(directoryPath);
foreach (var file in dir.EnumerateFiles("f*.txt")) {
    file.Delete();
}

(当然,您可能需要添加错误处理。)

我知道这个问题已经得到了答案,答案很好,但在.NET 4.0及更高版本中还有一个替代方案。使用Directory.EnumerateFiles(),因此:

foreach (string f in Directory.EnumerateFiles(myDirectory,"f*.txt"))
{
    File.Delete(f);
}

DirectoryInfo.GetFiles()的缺点是它返回一个文件列表,99.9%的时间都是很好的。缺点是,如果文件夹包含数万个文件(这是罕见的),那么它会变得非常慢,并且枚举匹配的文件会快得多。

您可以将Directory.GetFiles方法与通配符重载一起使用。这将返回所有与您的模式匹配的文件名。然后可以删除这些文件。

我很感激这个线程现在有点旧了,但如果你想使用linq,那么

Directory.GetFiles("f:''TestData", "*.zip", SearchOption.TopDirectoryOnly).ToList().ForEach(File.Delete);