Directory.GetFiles: Show only files starting with a numeric value
Asked Answered
I

2

6

How can i get the Directory.GetFiles to only show me files starting with a numeric value (eg. 1abc.pdf);

Directory.GetFiles(@"C:/mydir", "0-9*.pdf")
Impanel answered 11/3, 2012 at 7:23 Comment(0)
P
4

To get files that start with any numeric value, regardless of the number of digits, you could use a regular expression:

var files = Directory.GetFiles(@"c:\mydir", "*.pdf")
                     .Where(file => Regex.IsMatch(Path.GetFileName(file), "^[0-9]+"));
                     //.ToArray() <-add if you want a string array instead of IEnumerable
Punchdrunk answered 11/3, 2012 at 7:39 Comment(1)
That works great - thx! So, do you have any idea how i could incorporate that into one expression that accepts both alpha and numeric lookup. IE i have the following workin one var currentPage = Directory.GetFiles(filePath, startChar + "*.pdf").Skip((pageNum - 1) * pageSize).Take(pageSize).Select(path => new FileInfo(path)).ToArray();. With you where clause added var currentPage = Directory.GetFiles(filePath, startChar + "*.pdf").Where(file => Regex.IsMatch(Path.GetFileName(file), "^[0-9]+")).Skip((pageNum - 1) * pageSize).Take(pageSize).Select(path => new FileInfo(path)).ToArray();.Impanel
M
3

There is no way to specify this directly in the search pattern. It's capabilities are pretty limited (mainly supports the * wildcard). The best way to accomplish this is to filter on *.pdf and then use a LINQ query to filter to the ones that start with a digit

Directory
  .GetFiles(@"c:\mydir", "*.pdf")
  .Where(x => Char.IsDigit(Path.GetFileName(x)[0]));
Marigolda answered 11/3, 2012 at 7:30 Comment(1)
What if i had to incorporate that into my "real" expression, which is var currentPage = Directory.GetFiles(filePath, startChar + "*.pdf").Skip((pageNum - 1) * pageSize).Take(pageSize).Select(path => new FileInfo(path)).ToArray();? The logic behind is that i have a alpha pager (A, B, C.. etc and a 0-9 link also) hence i would like to be able to select the specific startchar (alpha or numeric) that is shown in the list. The above works fine with alpha chars only.Impanel

© 2022 - 2024 — McMap. All rights reserved.