2012-01-10 27 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

相關問題