2009-08-04 3 views

ответ

12

Этот фрагмент кода извлекает список всех логических дисков на компьютере, а затем ищет все папки на диске для файлов, которые соответствуют имени файла «Cheese.exe». После того, как цикл завершен, «файлы» Список содержит

 var files = new List<string>(); 
    //@Stan R. suggested an improvement to handle floppy drives... 
    //foreach (DriveInfo d in DriveInfo.GetDrives()) 
    foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady == true)) 
    { 
     files.AddRange(Directory.GetFiles(d.RootDirectory.FullName, "Cheese.exe", SearchOption.AllDirectories)); 
    } 
+1

Почти - вам нужно добавить в SearchOption –

+0

, что произойдет, когда у вас нет доступа к каталогу give ... скажите «Документы и настройки» :) –

+0

Да, потребуется некоторая обработка исключений - фрагмент не удастся выполнить большинство машин, поскольку дисковод гибких дисков не готов. Он показывает синтаксис метода GetFiles, хотя это и необходимо. –

2

Если вы хотите, чтобы узнать немного больше о механике поиска в нескольких каталогах, Googling показал this post. У этого есть хорошее решение и объяснение рекурсии через каталоги самостоятельно. Вы можете изменить спецификацию файлов в Directory.GetFiles, чтобы соответствовать строке поиска и, вероятно, использовать ее как есть.

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