Атрибуты файлов и управление каталогами

Атрибуты файлов и управление каталогами

Существует возможность просмотра указанного каталога с целью поиска файлов и других каталогов, имена которых соответствуют заданному шаблону, одновременно с получением атрибутов файлов. Для выполнения поиска требуется дескриптор поиска (search handle), получаемый с помощью функции FindFirstFile. Для нахождения файлов, имена которых удовлетворяют заданным условиям, используется функция FindNextFile, а для прекращения поиска — функция FindClose. 

HANDLE FindFirstFile(LPCTSTR lpFileName, LPWIN32_FIND_DATA lpffd)

Возвращаемое значение: дескриптор поиска. Значение INVALID_HANDLE_VALUE указывает на неудачное завершение функции.

В процессе поиска имен, соответствующих искомому, функция FindFirstFile проверяет имена не только файлов, но и подкаталогов. Возвращенное функцией значение дескриптора типа HANDLE используется для продолжения поиска.

Параметры

lpFileName — указатель на строку, содержащую имя каталога или полное имя файла, при указании которых можно использовать метасимволы (? и *). Если необходимо осуществить поиск конкретного файла, метасимволы опускаются.

lpffd — указатель на структуру WIN32_FIND_DATA, которая принимает информацию о первом найденном файле или каталоге, который удовлетворяет критерию поиска, если таковой был найден.

Структура WIN32_FIND_DATA определяется следующим образом: 

typedef struct_WIN32_FIND_DATA {

 DWORD dwFileAttributes;

 FILETIME ftCreationTime;

 FILETIME ftLastAccessTime;

 FILETIME ftLastWriteTime;

 DWORD nFileSizeHigh;

 DWORD nFileSizeLow;

 DWORD dwReserved0;

 DWORD dwReserved1;

 TCHAR cFileName[MAX_PATH];

 TCHAR cAlternateFileName[14];

 } WIN32_FIND_DATA; 

Параметр dwFileAttributes можно тестировать на присутствие значений, описанных при рассмотрении функции CreateFile, а также некоторых других значений, например, FILE_ATTRIBUTE_SPARSE_FILE или FILE_ATTRIBUTE_ENCRYTPED, которые не устанавливаются функцией CreateFile. Описание меток времени трех типов (время создания, время последнего обращения и время последнего изменения) приведено в одном из следующих разделов. Названия полей размера файла (nFileSizeHigh и nFileSizeLow) говорят сами за себя. cFileName — это не полное имя файла, содержащее путь доступа, а само имя файла. cAlternateFileName — имя файла в формате DOS 8.3 (включая точку); эта информация редко используется и может понадобиться лишь для того, чтобы определить, каким будет имя файла в файловой системе FAT16.

Во многих случаях требуется просматривать каталог с целью поиска файлов, имена которых соответствуют некоторому шаблону, содержащему метасимволы ? и *. Для этого следует использовать дескриптор поиска, полученный из функции FindFirstFile, в котором содержится информация об искомом имени, и вызвать функцию FindNextFile. 

BOOL FindNextFile(HANDLE hFindFile, LPWIN32_FIND_DATA lpffd) 

Функция FindNextFile возвращает значение FALSE, если аргументы недействительны или если не удается найти файл, удовлетворяющий критерию поиска, причем последнему случаю соответствует возвращаемое значение функции GetLastError, равное ERROR_NO_MORE_FILES.

После того как поиск завершен, дескриптор поиска должен быть закрыт. Функцию CloseHandle для этой цели использовать нельзя. Это редкий пример нарушения правила, согласно которому функция CloseHandle применима к дескрипторам любого типа; в данном случае закрытие дескриптора поиска подобным способом приведет к генерации исключения. Вместо этого необходимо использовать следующую функцию: 

BOOL FindClose(HANDLE hFindFile) 

Функция GetFileInformationByHandle позволяет получить информацию о конкретном файле, на который указывает открытый дескриптор файла. Она также возвращает поле nNumberOfLinks, в котором содержится количество жестких ссылок на файл, установленных функцией CreateHardLink.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Работа с виртуальными каталогами IIS

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Работа с виртуальными каталогами IIS Одна инсталляция IIS способна обслуживать множество Web-приложений, каждое из которых размещается в своем виртуальном каталоге. Каждый виртуальный каталог проецируется в физический каталог на локальном жестком диске. Так, если вы


Атрибуты файлов и папок

Из книги Windows Vista автора Вавилов Сергей

Атрибуты файлов и папок Выше при рассмотрении окна свойств файлов и папок упоминалось о том, что на вкладке Общие есть настройки для установки атрибутов. О них мы и поговорим в данном подразделе. Щелкните правой кнопкой мыши на интересующих вас файле или папке и выполните


4.2.2. Команды для работы с каталогами

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

4.2.2. Команды для работы с каталогами Просмотр содержимого каталогаДля просмотра содержимого каталога используется команда ls. Закоренелые пользователи DOS могут использовать привычную им команду dir, но команда Is намного удобнее. Программа ls имеет около сорока параметров,


3.1.5. Атрибуты файлов и структуры записи

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

3.1.5. Атрибуты файлов и структуры записи Unix-файлы не имеют ни структур записи (record structure), ни атрибутов. В некоторых операционных системах файлы имеют связанные структуры записи; операционная система (или ее служебные библиотеки) "знает" о файлах с фиксированной длиной


7.5. Атрибуты файлов

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

7.5. Атрибуты файлов Для каждого файла можно установить четыре атрибута (рис. 49):Только чтение — файл нельзя изменить, пока данный атрибут не сброшен.Скрытый — файл не будет отображаться при выводе содержимого каталога, пока не будет включен режим отображения скрытых


3.1.5. Атрибуты файлов и структуры записи

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

3.1.5. Атрибуты файлов и структуры записи Unix-файлы не имеют ни структур записи (record structure), ни атрибутов. В некоторых операционных системах файлы имеют связанные структуры записи; операционная система (или ее служебные библиотеки) "знает" о файлах с фиксированной длиной


Управление файлами и каталогами

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Управление файлами и каталогами В этом разделе вводятся основные функции, предназначенные для управления файлами и


Управление каталогами

Из книги Справочник по PHP автора

Управление каталогами Создание и удаление каталогов осуществляется при помощи двух простых функций.  BOOL CreateDirectory(LPCTSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes) BOOL RemoveDirectory(LPCTSTR lpPathName) lpPathName является указателем на завершающуюся нулевым символом строку, которая содержит путь к


ГЛАВА 5 Управление памятью, отображение файлов и библиотеки DLL

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

ГЛАВА 5 Управление памятью, отображение файлов и библиотеки DLL Управление динамической памятью в той или иной форме требуется в большинстве программ. Необходимость в этом возникает всякий раз, когда требуется создавать структуры данных, размер которых не может быть


Функции для работы с каталогами

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

Функции для работы с каталогами mkdirСоздание каталога.Синтаксис:bool mkdir(string $name, int $perms)Создает каталог с именем $name и правами доступа perms. Права доступа для каталогов указываются точно так же, как и для файлов. Чаще всего значение $perms устанавливают равным 0770 (предваряющий ноль


Манипулирование каталогами

Из книги Linux программирование в примерах автора Роббинс Арнольд

Манипулирование каталогами mkdirСоздание каталога.Синтаксис:bool mkdir(string $name, int $perms)Создает каталог с именем $name и правами доступа perms. Права доступа для каталогов указываются точно так же, как и для файлов. Чаще всего значение $perms устанавливают равным 0770 (предваряющий ноль


Глава 14 Операции с каталогами

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

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


5.6. Команды для работы с каталогами

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

5.6. Команды для работы с каталогами Основные команды для работы с каталогами приведены в табл. 5.2. При указании имени каталога можно указать следующие символы:?. — означает текущий каталог. Если вы введете команду cat./file, то она выведет файл file, который находится в текущем


9.4. Управление дескрипторами файлов

Из книги автора

9.4. Управление дескрипторами файлов На данный момент части загадки почти полностью составлены, fork() и exec() создают процессы и запускают в них программы, pipe() создает канал, который может использоваться для IPC. Чего до сих пор не хватает, так это способа помещения дескрипторов


Глава 12. Управление файлами и каталогами

Из книги автора

Глава 12. Управление файлами и каталогами 12.0. Введение Операционная система iOS основана на MacOS X, которая, в свою очередь, построена на базе операционной системы Unix. В iOS полная структура каталогов остается невидимой для приложения, поскольку каждое приложение, написанное


Работа с каталогами

Из книги автора

Работа с каталогами Класс QDir обеспечивает независимые от платформы средства работы с каталогами и получение информации о файлах. Для демонстрации способов применения класса QDir мы напишем небольшое консольное приложение, которое подсчитывает размер дискового