views:

64

answers:

3

I need to get list of files on some drive with paths that matches specific pattern, for example FA\d\d\d\d.xml where \d is digit (0,1,2..9). So files can have names like FA5423.xml.

What is the most efficient name to do this?

+2  A: 

Use the Directory API to find FA????.xml, and run the resulting list through a regex filter:

var fa = from f in Directory.GetFiles("FA????.xml")
         where Regex.Match(f, "FA\d\d\d\d\.xml")
         select f;
Marcelo Cantos
Won't Regex.Match return a Match object rather than a boolean?
Phil
+1  A: 

You could do something like:

System.IO.Directory.GetFiles(@"C:\", "FA????.xml", SearchOption.AllDirectories);

Then from your results just iterate over them and verify them against your regex i.e. that the ? characters in the name are all numbers

James
+1  A: 

Are you using C# 3?

Regex reg = new Regex(@"^FA[0-9]{4}\.xml$");
var files = Directory.GetFiles(yourPath, "*.xml").Where(path => reg.IsMatch(path));
Phil
`.Select(path => path)` is redundant.
Marcelo Cantos
oki... and now that I look again I should anchor the regex and there's no point in getting `*.*` either.
Phil