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

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

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

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

BOOL GetFileTime(HANDLE hFile, LPFILETIME lpftCreation, LPFILETIME lpftLastAccess, LPFILETIME lpftLastWrite) 

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

• Функция FileTimeToSystemTime (здесь не описывается; см. справочную систему Windows и программу 3.2) разбивает метки времени файла на отдельные блоки, соответствующие естественным единицам измерения, от годов до секунд и миллисекунд. Эти блоки удобно, например, использовать при выводе временных атрибутов файлов на экран или принтер.

• Функция SystemTimeToFileTime обращает этот процесс, преобразуя время, выраженное в естественных единицах, в метки времени файла.

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

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

• Функции FileTimeToLocalFileTime и LocalFileTimeToFileTime преобразуют значения меток времени, соответственно, от всеобщего скоординированного времени UTC к местному времени и наоборот.

Функция GetFileType, которая здесь подробно не описывается, позволяет различать файлы трех типов: дисковые, символьные (к ним, по сути, относятся такие устройства, как принтеры и консоли) и каналы (см. главу 11). Как и в большинстве других случаев, файл, характеристику которого необходимо определить, задается дескриптором.

Функция GetFileAttributes принимает в качестве аргумента имя файла или каталога, а всю информацию об атрибутах передает через свое возвращаемое значение dwFileAttributes. 

DWORD GetFileAttributes(LPCTSTR lpFileName)

Возвращаемое значение: в случае успешного завершения — атрибуты файла, иначе — 0xFFFFFFFF.

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

• FILE_ATTRIBUTE_DIRECTORY

• FILE_ATTRIBUTE_NORMAL

• FILE_ATTRIBUTE_READONLY

• FILE_ATTRIBUTE_TEMPORARY

Для изменения атрибутов именованных файлов служит функция SetFileAttributes. 

В UNIX трем вышеописанным функциям Find соответствуют функции opendir, readdir и closedir. Функция stat предоставляет размер файла и значения меток времени, а также информацию о его индивидуальном или групповом владельце, необходимую для защиты файлов в UNIX. Разновидностями этой функции являются функции fstat и lstat. Эти функции позволяют также получать информацию о типе файла. Метки времени файла в UNIX устанавливаются с помощью функции utime. Эквивалента атрибута временного файла в UNIX не существует.

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

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

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

7.1.3. Проверка файлов и каталогов

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

7.1.3. Проверка файлов и каталогов Для проверки файлов и каталогов используется сканер clam-scan. Вот как можно проверить подозрительный файл file.bin:clamscan file.binДля проверки каталогов желательно указывать опцию -r, чтобы заодно были проверены все их подкаталоги:clamscan -r /home/denА вот


5.7.7 Раскрытие шаблонов имен файлов и каталогов (Pathname Expansion)

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

5.7.7 Раскрытие шаблонов имен файлов и каталогов (Pathname Expansion) Подстановки имен путей и файлов (Pathname expansion) используются для того, чтобы с помощью краткого образца или шаблона указать несколько имен файлов (или каталогов), соответствующих данному шаблону. После разделения


18.5.2. Другие DTD-определения

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

18.5.2. Другие DTD-определения Небольшое отступление к другим DTD-определениям поможет прояснить, какие сведения предыдущего раздела являются специфичными для DocBook, а какие являются общими для всех языков структурированной разметки.TEI (Text Encoding Initiative, <http://www.tei-c.org/>)—


Создание, копирование и перемещение файлов и каталогов

Из книги Новейший самоучитель работы на компьютере автора Белунцов Валерий

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


18.5.2. Другие DTD-определения

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

18.5.2. Другие DTD-определения Небольшое отступление к другим DTD-определениям поможет прояснить, какие сведения предыдущего раздела являются специфичными для DocBook, а какие являются общими для всех языков структурированной разметки.TEI (Text Encoding Initiative, <http://www.tei-c.org/>)—


10.1.34. Поиск файлов и каталогов

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

10.1.34. Поиск файлов и каталогов Ниже мы воспользовались стандартной библиотекой find.rb для написания метода, который находит один или более файлов и возвращает их список в виде массива. Первый параметр — это начальный каталог, второй — либо имя файла (строка), либо


Функции для определения типов файлов

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

Функции для определения типов файлов file_existsПроверяет существование вызываемого файла.Синтаксис:bool file_exists(string filename)Возвращает true, если файл с именем filename существует на момент вызова. Следует использовать эту функцию с осторожностью. Например, следующий код никуда не


Другие методы вывода

Из книги Технология XSLT автора Валиков Алексей Николаевич

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


4.7. Шифрование файлов и каталогов

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

4.7. Шифрование файлов и каталогов Более дорогие выпуски Windows 7 — Профессиональная (Professional), Корпоративная (Enterprise) и Максимальная (Ultimate) поддерживают функцию шифрования файлов и каталогов (система EFS). Зашифрованные файлы нельзя просмотреть на другом компьютере, например,


11.5.1. Группа по умолчанию для новых файлов и каталогов

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

11.5.1. Группа по умолчанию для новых файлов и каталогов В оригинальной системе Unix, когда open() или creat() создавали новый файл, он получал эффективные UID и GID создавшего их процесса.V7, BSD вплоть до BSD 4.1 и System V вплоть до Release 3 все трактовали каталоги как файлы. Однако, с добавлением


12.4. Перечисление файлов и каталогов

Из книги Linux Mint и его Cinnamon. Очерки применителя автора Федорчук Алексей Викторович

12.4. Перечисление файлов и каталогов Постановка задачи Вы хотите построить перечень подкаталогов, содержащихся в каталоге, либо построить список файлов, содержащихся в каталоге. Акт перечисления означает, что вы просто хотите найти все каталоги и/или файлы,


12.5. Удаление файлов и каталогов

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

12.5. Удаление файлов и каталогов Постановка задачи Вы создали на диске ряд файлов и/или каталогов, и они вам больше не нужны. Вы хотите их


Создание файлов и каталогов

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

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