2015-11-23 2 views
1

У меня есть набор файлов, присутствующих где-то в моей папке Windows. Я знаю только их корневой путь, а не их точный путь. Смотрите ниже:Код C# для поиска точного имени файла в папке Windows

Список файлов:

  1. Linq.doc

  2. OOPs.doc

Корневой путь:

  1. E: \ RootFolder ...... \ Linq.doc

  2. E: \ RootFolder ...... \ OOPs.doc

Мне нужно получить их полный путь из моего. Net кода. Таким образом, выход должны быть возвращены что-то вроде этого:

Выход требуется:

  1. E: \ RootFolder \ SubFolder1 \ Linq.doc

  2. E: \ RootFolder \ SubFolder1 \ SubFolder9 \ OOPs.doc

Я попытался использовать следующий код, но он возвращает неправильные результаты:

Directory.SetCurrentDirectory(@"E:\RootFolder"); 
var Filepath= Directory.GetDirectories("Linq.doc","*.doc*",SearchOption.AllDirectories); 

Пожалуйста, сообщите, что может быть лучшим решением?

+0

Пожалуйста, добавьте решение в качестве ответа, а не редактируйте вопрос. – ChrisF

+0

GetDirectories() - отличный способ найти * файлы *. Наверняка это немного очевидно? –

+0

@HansPassant, я добавил свое решение, которое было удалено редактором, так как оно было не в том месте. Я использую EnumerateFiles, который более эффективен, чем GetFiles: var results2 = Directory.EnumerateFiles (@ "E: \ RootFolder", "* .doc", SearchOption.AllDirectories). Где (p => p.Contains (sFile2)); – user5593927

ответ

0

я выяснял решение, которое заключается в использовании EnumerateFiles с «где» п. См. Код ниже:

var results2 = Directory.EnumerateFiles(@"E:\RootFolder", "*.doc", SearchOption.AllDirectories).Where(p => p.Contains(sFile2)); 

Использование EnumerateFiles более эффективно, чем использование GetFiles. Это решает мой вопрос.

3

Вы можете использовать Directory.GetFiles вместо Directory.GetDirectories

System.IO.Directory.GetFiles(@"E:\RootFolder", "Linq.doc", SearchOption.AllDirectories); 

См документации here

+0

Я использовал EnumerateFiles с предложением «Где». См. Мой ответ в следующем сообщении ниже. – user5593927

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