Удаление нескольких файлов с подстановочными знаками

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

3 ответа

Решение

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

var dir = new DirectoryInfo(directoryPath);

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

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

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

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

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

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

Я ценю, что эта ветка сейчас немного устарела, но если вы хотите использовать linq, тогда

Directory.GetFiles("f:\\TestData", "*.zip", SearchOption.TopDirectoryOnly).ToList().ForEach(f => File.Delete(f));
Другие вопросы по тегам