2012-01-10 31 views

Respuesta

117

Puede utilizar el DirectoryInfo.EnumerateFiles function:

var dir = new DirectoryInfo(directoryPath); 

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

(. Por supuesto, es probable que desee agregar control de errores)

8

Puede utilizar el método Directory.GetFiles con la sobrecarga de caracteres comodín. Esto devolverá todos los nombres de archivo que coincidan con su patrón. A continuación, puede eliminar estos archivos.

33

Sé que esto ya ha sido contestada y con una buena respuesta, pero existe una alternativa en .NET 4.0 y superior. Utilice Directory.EnumerateFiles(), por lo tanto:

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

La desventaja de DirectoryInfo.GetFiles() es que devuelve una lista de archivos - los cuales el 99.9% de las veces es grande. La desventaja es que si la carpeta contiene decenas de miles de archivos (lo cual es raro), entonces se vuelve muy lenta y la enumeración a través de los archivos que coinciden es mucho más rápida.

+2

Tenga en cuenta que 'DirectoryInfo' tiene' EnumerateFiles() 'también. – TrueWill

+3

En caso de que alguien se pregunte por qué esta respuesta es tan similar a la respuesta aceptada, es porque la respuesta aceptada ha sido reescrita a la luz de esta. Lo cual es una pena porque el uso de 'DirectoryInfo.GetFiles()' (que fue la respuesta original) es la única forma de hacerlo para versiones anteriores de .NET. –

Cuestiones relacionadas