您知道在linux中这很容易,但是我不能仅仅理解如何在Windows上的C#中做到这一点。我想删除所有与通配符匹配的文件f*.txt
。我该如何去做?
Answers:
您可以使用以下DirectoryInfo.EnumerateFiles
功能:
var dir = new DirectoryInfo(directoryPath);
foreach (var file in dir.EnumerateFiles("f*.txt")) {
file.Delete();
}
(当然,您可能需要添加错误处理。)
EnumerateFiles
over的意义GetFiles
。
我知道这已经得到了回答,并且给出了很好的答案,但是.NET 4.0和更高版本中有替代方法。使用Directory.EnumerateFiles()
,因此:
foreach (string f in Directory.EnumerateFiles(myDirectory,"f*.txt"))
{
File.Delete(f);
}
的缺点DirectoryInfo.GetFiles()
是它返回文件列表-99.9%的时间很棒。缺点是,如果该文件夹包含成千上万个文件(这是很少见的),则它会变得非常慢,并且枚举匹配的文件会快得多。
DirectoryInfo
有EnumerateFiles()
。
DirectoryInfo.GetFiles()
是,对于早期版本的.NET,使用(原来的答案)是唯一的方法。
您可以将Directory.GetFiles方法与通配符重载一起使用。这将返回与您的模式匹配的所有文件名。然后,您可以删除这些文件。
dir.EnumerateFiles("f*.txt").ToList().ForEach(f => f.Delete());