Поделиться через


Каталоги LINQ и файлов (Visual Basic)

Многие операции файловой системы по сути являются запросами и поэтому хорошо подходят для подхода LINQ.

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

В этом разделе содержатся следующие разделы:

Практическое руководство. Запрос файлов с указанным атрибутом или именем (Visual Basic)
Показывает, как искать файлы, проверяя одно или несколько свойств объекта FileInfo .

Практическое руководство. Группирование файлов по расширению (LINQ) (Visual Basic)
Показывает, как возвращать группы FileInfo объектов на основе расширения имени файла.

Практическое руководство. Запрос общего количества байтов в наборе папок (LINQ) (Visual Basic)
Показывает, как вернуть общее количество байтов во всех файлах в указанном дереве каталогов.

Практическое руководство. Сравнение содержимого двух папок (LINQ) (Visual Basic)
Показывает, как вернуть все файлы, присутствующих в двух указанных папках, а также все файлы, которые присутствуют в одной папке, но не другие.

Практическое руководство. Запрос к крупнейшему файлу или файлам в дереве каталогов (LINQ) (Visual Basic)
Показывает, как возвращать самый большой или наименьший файл или указанное количество файлов в дереве каталогов.

Практическое руководство. Запрос повторяющихся файлов в дереве каталогов (LINQ) (Visual Basic)
Показывает, как группировать все имена файлов, которые встречаются в более чем одном месте в указанном дереве каталогов. Кроме того, показано, как выполнять более сложные сравнения на основе пользовательского компаратора.

Запрос содержимого файлов в папке (LINQ) (Visual Basic)
Показывает, как выполнять итерацию папок в дереве, открывать каждый файл и запрашивать содержимое файла.

Комментарии

Существует некоторая сложность создания источника данных, который точно представляет содержимое файловой системы и обрабатывает исключения корректно. В примерах этого раздела создается коллекция моментальных снимков объектов FileInfo, представляющая все файлы в указанной корневой папке и все ее вложенные папки. Фактическое состояние каждого из них FileInfo может измениться в период между началом и завершением выполнения запроса. Например, можно создать список FileInfo объектов для использования в качестве источника данных. Если вы попытаетесь получить доступ к Length свойству в запросе, FileInfo объект попытается получить доступ к файловой системе, чтобы обновить значение Length. Если файл больше не существует, вы получите `FileNotFoundException` в вашем запросе, даже если вы не обращаетесь к файловой системе напрямую. В некоторых запросах в этом разделе используется отдельный метод, который использует эти конкретные исключения в определенных случаях. Другим вариантом является динамическое обновление источника данных с помощью .FileSystemWatcher

См. также