Удаление нескольких файлов с подстановочными знаками - PullRequest
65 голосов
/ 10 января 2012

Вы знаете, что в Linux это легко, но я не могу просто понять, как это сделать в C # на Windows. Я хочу удалить все файлы, соответствующие шаблону f*.txt. Как мне это сделать?

Ответы [ 3 ]

126 голосов
/ 10 января 2012

Вы можете использовать функцию DirectoryInfo.EnumerateFiles :

var dir = new DirectoryInfo(directoryPath);

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

(Конечно, вы, вероятно, захотите добавить обработку ошибок.)

43 голосов
/ 23 апреля 2015

Я знаю, что на этот вопрос уже был дан хороший ответ, но есть альтернатива в .NET 4.0 и выше . Используйте Directory.EnumerateFiles(), таким образом:

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

Недостатком DirectoryInfo.GetFiles() является то, что он возвращает список файлов - что в 99,9% случаев является отличным. Недостатком является то, что если папка содержит десятки тысяч файлов (что встречается редко), то она становится очень медленной, а перечисление соответствующих файлов происходит намного быстрее.

8 голосов
/ 10 января 2012

Вы можете использовать метод Directory.GetFiles с перегрузкой по шаблону.Это вернет все имена файлов, которые соответствуют вашему шаблону.Затем вы можете удалить эти файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...