Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В каталоге можно искать файлы и другие каталоги, удовлетворяющие указанному образцу имени, а также получать атрибуты файлов. Для этого необходим дескриптор поиска, который возвращается функцией FindFirstFile. Для получения нужных файлов служит функция FindNextFile, а для завершения поиска — FindClose.
HANDLE FindFirstFile (LPCSTSTR lpszSearchFile, LPWIN32__FIND_DATA lpffd)
Возвращаемое значение: дескриптор поиска. INVALID_HANDLE_VALUE указывает на неудачу.
FindFirstFile ищет соответствие имени как среди файлов, так и среди подкаталогов. Возвращаемый дескриптор используется в последующем поиске.
Параметры
lpszSearchFile указывает на каталог или полное имя, которое может содержать подстановочные знаки (? и *).
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 cAlternateFiiename [14];
} WIN32_FIND_DATA;
dwFileAttributes можно проверить на соответствие значениям, приведенным в описании CreateFile. Далее следуют три значения времени (время создания файла, время последнего доступа и последней записи). Поля размера файла, содержащие его текущую длину, не требуют пояснений.
cFileName — это не полное имя, а собственно имя файла.
cAlternateFile — версия имени файла для DOS формата 8.3 (включая точку). Это то же сокращение имени файла, которое отображается в проводнике Windows. Оба имени — строки с завершающим нулем.
Часто требуется найти в каталоге файлы, имена которых удовлетворяют образцу, содержащему подстановочные знаки? и *. Для этого нужно получить из FindFirstFile дескриптор поиска, который содержит информацию об искомом имени, и вызвать функцию FindNextFile.
BOOL FindNextFile (HANDLE hFindFile, LPWIN32_FIND_DATA lpffd)
Функция FindNextFile возвращает FALSE либо при недопустимых параметрах, либо если соответствие данному образцу уже нельзя найти. В последнем случае GetLastError возвращает ERROR_NO_MORE_FILES.
Когда поиск закончен, закройте дескриптор поиска. Не используйте для этого функцию CloseHandle. Для закрытия дескрипторов поиска предназначена функция:
BOOL FindClose (HANDLE hFindFile)
Функция GetFileInformationByHandle позволяет получить ту же информациюдля определенного файла, указав его открытый дескриптор.
Дата публикования: 2015-11-01; Прочитано: 374 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!