2012-01-10 21 views

Odpowiedz

117

Można użyć DirectoryInfo.EnumerateFiles function:

var dir = new DirectoryInfo(directoryPath); 

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

(. Oczywiście, prawdopodobnie będziesz chciał dodać obsługę błędów)

8

Możesz użyć metody Directory.GetFiles z przeciążeniem ze znakiem wieloznacznym. Spowoduje to zwrócenie wszystkich nazw plików pasujących do twojego wzorca. Następnie możesz usunąć te pliki.

33

wiem, że to już odpowiedział z dobrą odpowiedzią, ale istnieje alternatywa w .NET 4.0 i wyższej. Użyj Directory.EnumerateFiles(), a więc:

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

Wadą DirectoryInfo.GetFiles() jest to, że zwraca listę plików, które - 99,9% czasu jest wielka. Wadą jest to, że folder zawiera dziesiątki tysięcy plików (co jest rzadkie), a następnie staje się bardzo powolny i wyliczanie za pomocą pasujących plików jest znacznie szybsze.

+2

Należy zauważyć, że 'DirectoryInfo' ma również' EnumerateFiles() '. – TrueWill

+3

Jeśli ktoś zastanawia się, dlaczego ta odpowiedź jest tak podobna do przyjętej odpowiedzi, to dlatego, że zaakceptowana odpowiedź została przepisana w świetle tego. To wstyd, ponieważ użycie 'DirectoryInfo.GetFiles()' (która była oryginalną odpowiedzią) jest jedynym sposobem, aby zrobić to dla wcześniejszych wersji .NET. –

Powiązane problemy