Как организовать поиск файлов на C#

{lang: 'ru'}

Как то раз я подумал: «А ведь иногда при вводе имени файла по запросу программы, он может точно не знать путь к нему, однако быть уверенным в том, что файл с таким названием существует. Возможно, иногда может быть полезным добавить в программу функцию поиска файла, чтобы она могла сама найти его, например, во вложенных файлах или через тот же интерфейс уточнить, есть такой или нет» Естественно, полез за ответом в поисковик. Естественно, интересовала реализация на C#, т.к. работаю я сейчас на этом языке и надо бы его потихоньку изучать и узнавать получше его возможности. По соответствующему запросу (который выглядел точно так же, как и заголовок статьи – «поиск файлов на C#«) нашел несколько форумов, на одном из которых был дан ответ.

Я решил сделать небольшую программку для поиска заданного файла в заданном и каталоге и подпапках. Здесь мне хочется привести пример её кода и поделиться некоторыми проблемами, которые возникли при отладке.

Ниже представлены эти самые «особенности» программы:

  • при попытке искать в защищенном каталоге программа выдаст ошибку и остановит поиск;
  • выяснилось, что конструкция ‘/’ воспринимается не как один символ, а как несколько; причем означают они по утверждению Visual Studio «конец строки».

Это те проблемы, которые решить мне пока не удалось. И если вторую я смог обойти (изменив несколько задуманный функционал программы), то первая все-еще портит впечатление и удовольствие от использования своей программы.

Итак, вот пример кода:


Надеюсь, что благодаря комментариям в коде большинство возможных вопросов разрешится.

Однако, все-таки отмечу некоторые моменты подробнее:

  • Поиск поддиректорий в директории активируется, только если функции FindInDir в качестве 3-его параметра придет «true»;
  • На форму был кинут элемент FolderBrowserDialog. Именно он появляется при нажатии кнопки «Обзор…»;
  • Запуск файла осуществляется через проводник командой Process.Start(«Путь к файлу или папке»).

Итак, что делает данная программа:

  1. Нужное имя файла и корневая папка для поиска задаются в соответствующих полях.
  2. Имя папки можно как ввести вручную, так и выбрать с помощью диалога после нажатия кнопки «Обзор…».
  3. Если галочка установлена, то поиск будет происходить также в подпапках. Если нет – то не будет. (По умолчанию галочка стоит).
  4. После нажатия кнопки «Искать!» происходит поиск заданного файла в заданной директории.
    Если на этом этапе возникает какая либо ошибка (например, не указано имя корневой папки), то выдается сообщение об этом и дальнейший поиск останавливается.
  5. Если в процессе поиска обнаруживаются соответствующие запросу файлы, то они выводятся списком в элемент управления ListBox, расположенный под кнопкой «Искать!»
  6. По двойному клику левой кнопки мыши на элементе из списка, происходит его открытие стандартной программой для данного типа файлов.
  7. Есть возможность очищать поле результатов. Для этого необходимо нажать кнопку «Очистить».
  8. Чтобы очистить как поле результатов, так и поля с данными для поиска, необходимо нажать кнопку «Очистить все».
  9. При осуществлении нового поиска результаты предыдущего автоматически стираются.

Вот исходник моей программы для поиска файлов на компьютере.


Полезная статья? Их будет больше, если вы поддержите меня!