2015-12-29 215 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

我會告訴你剛剛在硬盤上創建爭用。 –

相關問題