2014-02-13 2 views
0

fileNameMask 파일 이름이 "Table 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(); 

}