Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



В каталоге можно искать файлы и другие каталоги, удовлетворяющие указанному образцу имени, а также получать атрибуты файлов. Для этого необходим дескриптор поиска, который возвращается функцией 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...