2014-02-13 19 views
0

fileNameMaskI需要通过文件名掩码从目录加载文件,如果文件名以“表1”开头,但如果目录包含任何文件:“TestTable 1 someValue.xlsx”或“Test Table 1 someValue”。 xlsx“我的面具不起作用。如果我将掩码更改为“^(表1)。* \。xlsx $” - Directory.GetFiles返回所有带有“表1”的文件,但我只需要返回文件名从“表1”开始的文件。 。通过文件名掩码获取文件

My test code: 

var fileNameMask = "(Table 1).*\\.xlsx"; 
string path = @"c:\Temp\"; 
Regex searchPattern = new Regex(fileNameMask); 
string[] files = Directory.GetFiles(path).Where(f => searchPattern.IsMatch(f)).ToArray(); 
+0

的哪些错误用一个简单的:'Path.GetFileName(F).StartsWith( “表1”)' ? –

+0

我需要使用正则表达式,因为加载具有不同掩码的各种文件。我有这个文件的模板文件名掩码 – user3305198

+0

我不好在正则表达式,为什么不表1 ^。* \。xlsx $或表1(^)。* \。xlsx $不是从表1开始? – Mohanavel

回答

0
尝试

该掩模:

string maskfile = @"[^\w\s](Table 1)(.*)(.xlsx)"; 
+0

这对我有用。非常感谢你 – user3305198

3

您是否尝试过使用GetFiles方法的内置功能?

Directory.GetFiles(path, "Test 1*.xlsx") 
+0

我必须用正则表达式搜索模式 – user3305198

+0

为什么只有正则表达式?面具要快得多。 –

0

尝试以下代码:

private String[] GetFilesByMask(string pPath) 
{ 
    Regex mask = new Regex(sFileMask.Replace(".", "[.]").Replace("*", ".*").Replace(".", ".")); 
    Return Directory.GetFiles(pPath).Where(f => mask.IsMatch(f)).ToArray(); 

}