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