Подтвердить что ты не робот

Удаление нескольких файлов с помощью шаблона

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

4b9b3361

Ответ 1

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

var dir = new DirectoryInfo(directoryPath);

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

Directory.GetFiles("f:\\TestData", "*.zip", SearchOption.TopDirectoryOnly).ToList().ForEach(f => File.Delete(f));