Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can you call Directory.GetFiles() with multiple filters?

I am trying to use the Directory.GetFiles() method to retrieve a list of files of multiple types, such as mp3's and jpg's. I have tried both of the following with no luck:

Directory.GetFiles("C:\\path", "*.mp3|*.jpg", SearchOption.AllDirectories); Directory.GetFiles("C:\\path", "*.mp3;*.jpg", SearchOption.AllDirectories); 

Is there a way to do this in one call?

like image 858
Jason Z Avatar asked Oct 02 '08 15:10

Jason Z


1 Answers

For .NET 4.0 and later,

var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)             .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg")); 

For earlier versions of .NET,

var files = Directory.GetFiles("C:\\path", "*.*", SearchOption.AllDirectories)             .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg")); 

edit: Please read the comments. The improvement that Paul Farry suggests, and the memory/performance issue that Christian.K points out are both very important.

like image 104
Christoffer Lette Avatar answered Sep 18 '22 18:09

Christoffer Lette