2015-12-29 4 views
1

Как я могу найти существующий файл с расширением динамического файла и удалить его через Regex?Удалить файл с определенным именем и расширением динамического файла

var reg = new Regex(@"\.jpg|\.jpeg|\.png|\.gif|\.bmp"); 

Я могу предоставить имя файла, но я не знаю, как это сделать.

Исключить: string fileName = "img01";. Я хочу удалить эти изображения: img01.jpg, img01.jpeg, img01.png, img01.gif, img01.bmp.

Можете ли вы дать мне образец для этого?

p/s: Я не хочу получать все файлы с определенным расширением в папке и использовать цикл для его удаления.

+0

Может быть, вы можете сказать нам, как удалить несколько файлов без цикла. – J3soon

+0

'Я не хочу получать все файлы с определенным расширением в папке и использовать цикл для его удаления.' - Вы можете скрыть его за некоторым изящным запросом LINQ внутри метода или иначе. Но, в конце концов, цикл - это то, как вы должны это делать. –

+0

Эта часть 'p/s' - вы хотите все жестко кодировать? В конце концов вам ** ** необходимо будет использовать цикл так или иначе. –

ответ

6

Вы можете сделать это с помощью LINQ и TPL

var reg = new Regex(@"(\.jpg|\.jpeg|\.png|\.gif|\.bmp)$"); 

Directory.EnumerateFiles(@"C:\temp") 
     .Where(file => reg.Match(file).Success).AsParallel() 
     .ForAll(File.Delete) 

Или просто LINQ

var reg = new Regex(@"(\.jpg|\.jpeg|\.png|\.gif|\.bmp)$"); 

Directory.EnumerateFiles(@"C:\temp") 
     .Where(file => reg.Match(file).Success).ToList() 
     .ForEach(File.Delete) 
+5

Любая причина для AsParallel() здесь? –

+0

@ Moo-Juice, чтобы удалить быстрее –

+2

Я бы предположил, что вы просто создадите спор на жестком диске, делая это. –

Смежные вопросы