2012-01-10 96 views
57

您知道在Linux中很容易,但我不能理解如何在Windows上的C#中执行此操作。我想删除所有匹配通配符f*.txt的文件。我该如何去做呢?使用通配符删除多个文件

回答

117

可以使用DirectoryInfo.EnumerateFiles function

var dir = new DirectoryInfo(directoryPath); 

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

(当然,你可能会想加入错误处理)

8

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

33

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

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

DirectoryInfo.GetFiles()的缺点是,它返回的文件列表 - 其中99.9%的时间是伟大的。缺点是如果该文件夹包含数以万计的文件(这是罕见的),那么它变得非常慢,通过匹配文件枚举要快得多。

+2

请注意'DirectoryInfo'也有'EnumerateFiles()'。 – TrueWill 2015-10-27 17:29:13

+3

如果有人想知道为什么这个答案和被接受的答案非常相似,那是因为接受的答案已经根据这个被重写了。这是一个耻辱,因为使用'DirectoryInfo.GetFiles()'(这是最初的答案)是对早期版本.NET执行此操作的唯一方法。 – 2017-05-09 10:58:47