使用通配符删除多个文件

时间:2012-01-10 16:58:14

标签: c# windows

你知道在linux中它很容易,但我不能只在Windows上用C#来理解它。我想删除与通配符f*.txt匹配的所有文件。我该怎么做呢?

4 个答案:

答案 0 :(得分:125)

您可以使用DirectoryInfo.EnumerateFiles function

var dir = new DirectoryInfo(directoryPath);

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

(当然,您可能希望添加错误处理。)

答案 1 :(得分:42)

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

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

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

答案 2 :(得分:8)

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

答案 3 :(得分:0)

我很高兴这个线程现在有点旧了,但是如果您想使用linq,那么

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