2012-01-10 29 views

cevap

117

kullanabilirsiniz DirectoryInfo.EnumerateFiles function:

var dir = new DirectoryInfo(directoryPath); 

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

(. Tabii ki, büyük olasılıkla hata işleme eklemek isteyeceksiniz)

8

Joker karakter aşırı yükleme ile Directory.GetFiles yöntemini kullanabilirsiniz. Bu, deseninizle eşleşen tüm dosya adlarını döndürür. Daha sonra bu dosyaları silebilirsiniz.

33
Bu zaten yanıtlandı biliyoruz

ve iyi bir cevap ama .NET 4.0 ve daha yüksek numaralı bir alternatif var. Böylece, Directory.EnumerateFiles() kullanın:

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

DirectoryInfo.GetFiles() dezavantajı bu dosyaların bir listesini döndürür olmasıdır -% 99,9 oranında büyüktür. Dezavantaj, eğer klasör on binlerce dosya içeriyorsa (ki bu nadirdir), o zaman çok yavaş olur ve eşleşen dosyalar üzerinden numaralandırılması çok daha hızlıdır.

+2

"DirectoryInfo" nun "EnumerateFiles()" olduğunu unutmayın. – TrueWill

+3

Bu cevabın neden kabul edilen cevaba bu kadar benzediğini merak eden biri varsa, bunun nedeni kabul edilen cevabın bunun ışığında yeniden yazılmasıdır. Utanç verici olan 'DirectoryInfo.GetFiles()' ın (orijinal cevap olan) kullanılması, .NET'in önceki sürümleri için bunu yapmanın tek yoludur. –

İlgili konular