2015-12-13 6 views
0

Я пытаюсь написать метод, который будет получать путь с подстановочным, такими как: C: \ TEMP \ аа * .xml Я хочу вернуть List<FileInfo>Получить файлы с символами подстановки

Я Tring с

var directoryName = Path.GetDirectoryName(path); 
var filesName = Path.GetFileName(path); 

IDirectoryInfoWrap directoryInfo = new DirectoryInfoWrap(directoryName); 
var res = directoryInfo.GetFiles(filesName).ToList(); 

Но это не так, поскольку Path.Get ... не работает с путём, содержащим подстановочные знаки.

Я пробовал разделить путь, но .. Path.LastIndexOf(Path.DirectorySeparatorChar) не работает, возвращая -1 ... Я могу разделить и concat, но, похоже, много работы для этой небольшой функциональности.

+1

https://msdn.microsoft.com/en-us/library/system.io.directory.enumeratefiles(v=vs.110).aspx –

ответ

1

Используйте Directory.EnumerateFiles метод:

string fullFilePath = "c:\temp\aa*.xml"; 
string fileNamePattern = Path.GetFileName(fullFilePath); 
string sourceDirectory = fullFilePath.Replace(fileNamePattern, string.Empty); 

try 
{ 
    var foundFiles = Directory.EnumerateFiles(sourceDirectory, fileNamePattern); 

    foreach (string currentFile in foundFiles) 
    { 
     //Do whatever you need with the file here... 
    } 
} 
catch (Exception e) 
{ 
    //Handle exceptions here.. 
} 
+0

Я не «Не знаю, что такое sourceDirectory .. все это входит в параметр пути .. это может быть и UNC. –

+0

. Оказывается, это отличная проблема :(.. мой блок test отправляет« c: \ temp \ aa * »as путь, а не «c: \\ temp \\ aa». Но ваш код все еще работал :) Спасибо! –

+0

Добро пожаловать! –

Смежные вопросы