![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Данная функция запускает поиск в указанной директории. Функция возвращает указатель на найденный файл, если нет, то возврат будет типа ERROR_NO_MORE_FILES.
HANDLE FindFirstFile( LPCTSTR lpFileName, // Строка, содержащая путь для поиска файлов. LPWIN32_FIND_DATA lpFindFileData // Информация о найденном файле ); |
Теперь рассмотрим параметры подробней:
· lpFileName — строка, содержащая путь для поиска файла. Эта строка может указывать на конкретный файл типа ‘c:\filename.txt’ или может хранить шаблон ‘c:\*.*’. Если указывать шаблон, то это даёт возможность перечислить все файлы удовлетворяющие шаблону.
· lpFindFileData — структура 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 ]; //Имя файла для отображения в DOS (8:3) } WIN32_FIND_DATA; |
Атрибутами файла может быть комбинация из флагов:
· FILE_ATTRIBUTE_ARCHIVE — архивный
· FILE_ATTRIBUTE_COMPRESSED — сжатый
· FILE_ATTRIBUTE_HIDDEN — скрытый
· FILE_ATTRIBUTE_NORMAL — нормальный
· FILE_ATTRIBUTE_OFFLINE — данные файла недоступны
· FILE_ATTRIBUTE_READONLY — только для чтения
· FILE_ATTRIBUTE_SYSTEM — системный
· FILE_ATTRIBUTE_TEMPORARY — временный
Размер файла разложен на два байта. Чтоб получить полный размер файла нужно выполнить действие (FInfo.nFileSizeHigh * MAXDWORD) + FInfo.nFileSizeLow. Это не самый эффективный (эффективнее сдвигать), но самый понятный способ.
Теперь рассмотрим рабочий пример:
{ WIN32_FIND_DATA sss; HANDLE f; f = FindFirstFile("C:\*.*", &sss); ... FindClose(f); } |
Дата публикования: 2015-10-09; Прочитано: 740 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!