Найти файл во всех возможных папках? - PullRequest
5 голосов
/ 04 августа 2009

Мне было интересно, как я мог использовать c #, чтобы найти определенный файл (пример cheese.exe) во всех возможных каталогах? А затем сохранить путь к каталогу, в котором он его нашел?

Ответы [ 2 ]

12 голосов
/ 04 августа 2009

Этот фрагмент кода извлекает список всех логических дисков на машине, а затем ищет во всех папках на диске файлы, соответствующие имени файла «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));
     }
3 голосов
/ 04 августа 2009

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

Ссылка сейчас, к сожалению, мертва, но в двух словах решение в основном сводится к:

string[] files = Directory.GetFiles("C:\\Starting\\Path\\For\\Search\\",
    "cheese.exe",
    SearchOption.AllDirectories);

Обратите внимание, что спецификация файла (второй параметр) принимает символы подстановки, поэтому вы также можете искать « .exe» или даже «. *» Для рекурсивного вывода списка всех файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...