Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора 97.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
778.75 Кб
Скачать

10.3 Другие методы получения атрибутов файлов и каталогов

Функции FindFirstFile и FindNextFile позволяют получать следующую информацию об атрибутах файла: флаги атрибутов, три штампа времени и размер файла. Для рабо­ты с атрибутами есть несколько других функций, включая ту, что позволяет их устанавли­вать, и они могут работать непосредственно с дескриптором открытого файла без просмот­ра каталога или указания имени файла. Три таких функции, GetFileSize, GetFileSizeEx и SetEndOfFile, были описаны выше.

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

BOOL GetFileTime ( HANDLE hFile, LPFILETIME lpftCreation,

LPFILETIME lpftLastAccess, LPFILETTMF lpftLastWrite)

Значения времени здесь и в структуре WIN32_FIND_DATA — 64-разрядные целые числа без знака, указывающие 100-наносекундных единиц (107 единиц в секунду), прошедших с исходного времени (1 января 1601 г.), в форме всеобщего скоординиро­ванного времени (Universal Coordinated Time — UTC). Существует несколько удобных функций для работы со временем.

  • FileTimeToSystemTime выражает время файла в более привычных единицах — от лет до секунд и миллисекунд. Эта форма более пригодна, например, для отображения или вывода времени.

  • SystemTimeToFileTime производит обратное преобразование: времени, выраженного в этих единицах, во время файла.

  • CompareFileTime определяет, новее ли один файл, чем другой (-1), старше ли (+1) или их возрасты равны (0).

  • SetFileTime изменяет штампы времени; временные параметры, которые не надо изменять, указываются в вызове функции как 0. NTFS поддерживает все три временных параметрах, но FAT дает точный результат только для времени последнего доступа.

  • FileTimeToLocalFileTime и LocalFileTimeToFileTime преобразуют UTC в местное время и обратно.

Функция GetFileType позволяет различать дисковые файлы, символьные файлы (фактически это устройства наподобие принтеров и консолей) и каналы. Здесь файл также указывается своим дескриптором.

Функция GetFileAttributes по указанному имени файла и каталога возвращает только атрибуты.

DWORD GetFileAttributes (LPCTSTR lpszFileName)

Возвращаемое значение: атрибуты файла или 0xFFFFFFFF в случае неудачи.

Атрибуты можно проверить на соответствие комбинациям определенных значений. Некоторые атрибуты, такие как флаг временного файла, устанавливаются при вызове CreateFile. Значения атрибутов могут быть следующими:

FILE_ATTRIBUTE_DIRECTORY FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_TEMPORARY

Функция SetFileAttributes изменяет эти атрибуты в указанном по имени файле.

Имена временных файлов

Следующая функция создает имена для временных файлов. Имя может относиться к любому указанному каталогу и должно быть уникальным.

GetTempFileName выдает уникальное имя файла с расширением .tmp в указанном каталоге и может создавать такой файл.

UINT GetTempFileName ( LPCTSTB lpszPath, LPCTSTR lpszPrefix,

UINT uUnique, LPCTSTR lpszTempFile)

Возвращаемое значение: уникальное числовое значение, на основе которого создается имя файла. Если uUnique отлично от нуля, возвращается uUnique. При неудаче возвращаемое значение — нуль.

Параметры

lpszPath — каталог для временного файла. Символ "." обычно обозначает теку­щий каталог. Можно также указать каталог, предназначенный для временных файлов. Его имя выдает функция Win32 GetTempPath.

lpszPrefix — префикс имени временного файла. Допускаются только символы ANSI. Значение uUnique обычно равно нулю; в этом случае функция генерирует уникальное четырехразрядное число и создает файл. Если это значение отлично от нуля, файл не создается; это надо сделать с помощью CreateFile, возможно, указав FILE_FLAG_DELETE_ON_CLOSE.

lpszTempFile указывает на буфер, который содержит имя временного файла. Длина буфера в байтах должна быть не меньше МАХ_РАТН. Полученное в результате полное имя — конкатенация пути, префикса, четырехразрядного шестнадцатеричного числа и расширения .tmp

Лекция 11. Тема: Дополнительные методы работы с файлами и каталогами. Реестр

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]