Ввод/вывод файлов. Создание и открытие файлов, страница 4

Си.    \local-sources\chapl7\17-08. txt

 

FindFirstFile

Описание

• Windows 98   • Windows 2000Функция FindFirstFile ищет в каталоге первый файл, имя которого соответствует указанному искомому имени файла. Функция FindFirstFile проверяет не только имена файлов, но и имена подкаталогов. В приложении можно затем повторно вызывать функцию FindNextFiIe для выборки всех имен файлов и подкаталогов, соответствующих искомому имени файла.

 

Синтаксис

HANDLE FindFirstFile( LPCTSTR IpszSearchFile, LPWIN32 FIND DATA Ipffd)

 

Параметры

 

IpszSearcHFile

LPCTSTR. Указатель на строку с нулевым символом в конце, содержащую допустимое обозначение каталога или пути и имя файла, которая может содержать символы-заместители (* и ?). Длина строки не должна превышать МАХ_РАТН символов. В приложении Windows 2000 можно обойти это ограничение, вызвав широкую (W) версию функции FindFirstFile и поместив в начале строки символы "\\?\" или "\\7\UNC\" для отмены интерпретации пути.

 

Ipffil

LPWIN32_FIND_DATA Указатель на структуру   WIN32_FIND_DATA,которая принимает информацию о найденном файле или подкаталоге. Эта структура может использоваться в следующем вызове функции FindNextFiIe для указания найденного файла или каталога. Определение структуры WIN32_FIND_DATA приведено ниже.

 

Возвращаемое значение

HANDLE. В случае успешного выполнения — дескриптор поиска, используемый в следующих вызовах функции FindNextFiIe или FindClose; в ином случае - INVALID_HANDLE_VALUE.

 

Включаемый файл

winbase.h

 

См. также           FindFirstFileEx, FindClose, FindNextFiIe, GetFileAttributes, SetFileAttributes Определение WIN32_FIND_DATA

 

typedef struct   WIN32 FIND DATA {

DWORD           dwFileAttributes ;

FILETIME    f tCreationTime ;

FILETIME     ftLastAccessTime;

FILETIME    ftLastWriteTime;

DWORD           nFileSizeHigh;

DWORD           nFileSizeLow;

DWORD           dwReservedO ;

DWORD           dwReservedl ;

TCHAR           cFileName [   MAX_PATH ] ;

TCHAR          cAlterncteFileNam*[ 14   ]; }    WIN32   FIND DATA;

 

Члены dwFileAttributes

DWORD. Атрибуты найденного файла. Этот член может иметь одно или несколько значений, перечисленных в табл. 17.16.

 

Таблица 17.16. Значения члена dwFileAttributes структуры WIN32_FIND_DATA

 

Значение

Описание

 

HLE_ATTRIBUTE_ARCHIVE

Файл является архивным.

 

FILE_ATTRIBUTE COMPRESSED

Файл или каталог сжат.

 

FILE_ATTRIBUTE_DIRECTORY

Файл представляет собой каталог.

 

FILE_ATTR!BUTE_ENCRYPTED

Файл или каталог зашифрован.

 

HLE_ATTRBUTE_HIDDEN

Файл является скрытым.

 

FILE_ATTRIBUTE_NORMAL

Файл не имеет атрибутов. (Это значение допустимо, только если используется отдельно.)

 

FILE_ATTRIBUTE_OFFLINE

Данные файла не являются непосредственно доступными. Указывает, что данные файла физически перемещены на автономное запоминающее устройство.

 

FILE_ATTRIBUTE_READONLY

Файл предназначен только для чтения.

 

FILE_ATTRIBUTE_REPARSE_POINT

Файл имеет связанную с ним точку повторной интерпретации.

 

FILE_ATTRIBUTE_SPARSE_FILE

Файл является разреженным.

 

FILE_ATTRBUTE_SYSTEM

Файл является частью операционной системы или используется ею монопольно.

 

FILE_ATTRIBUTE_TEMPORARY

Файл используется для временного хранения данных. 

 

ftCreationlime

FILETIME. Время создания файла. Значение 0,0 указывает, что файловая система, содержащая файл, не поддерживает значение времени, представленное этим членом. Определение структуры FILETIME приведено в описании функции CompareFileTime.

ftLastAccessTime

FILETIME. Время последнего доступа к файлу. Значение 0,0 указывает, что файловая система, содержащая файл, не поддерживает значение времени, представленное этим членом. Определение структуры FILETIME приведено в описании функции CompareFileTime.

ftLastWriteTime

FILETIME. Время последней записи в файл. Определение структуры FILETIME приведено в описании функции CompareFileTime.

nFileSizeHigh

DWORD. Старшее слово значения размера файла, в байтах.

nFileSizeLow

DWORD. Младшее слово значения размера файла, в байтах.

dwReservedO

DWORD. Зарезервированное значение; не должно использоваться.

dwReservedl

DWORD. Зарезервированное значение; не должно использоваться.

cFileName

TCHAR[MAX_PATH]. Строка с нулевым символом в конце, которая содержит имя файла.

cAlternateFileNameTCHAR[14]. Строка с нулевым символом в конце, которая содержит альтернативное имя для файла, выраженное в формате 8.3 (filename. ext).

Пример

См. пример для функции FindFirstChangeNotification.

FindFirstFileEx                            •  Windows 98   • Windows 2000

Описание

Функция FindFirstFileEx ищет в каталоге файл, имя и атрибуты которого соответствуют указанным в качестве параметров вызова. Если основополагающая файловая система не поддерживает фильтрацию определенного типа, отличную от фильтрации каталогов, функция FindFirstFileEx завершается неудачно. После нахождения первого файла в приложении для поиска остальных файлов, соответствующих такому же образцу, с выполнением такой же фильтрации применяется функция FindNextFile. Когда дескриптор поиска становится ненужным, его следует закрыть с использованием функции FindClose.

Синтаксис

HANDLE FindFirstFUeEx( LPCTSTR IpFileName, FINDEX_INFO_LEVELS flnfoLevelld, LPVOID IpFmdFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID IpSearchFilter, DWORD dwAdditionalFlags )

Параметры

IpfileName

LPCTSTR Указатель на строку с нулевым символом в конце, содержащую допустимое обозначение каталога или пути и имя файла; последнее может содержать символы-заместители (* и ?).

flnfoLevelld

FINDEX INFO LEVELS. Информационный уровень возвращенных данных. В настоящее время определено единственное значение — FindExInfoStandard. Если эта константа определена, то параметр IpFindFiteData представляет собой указатель на структуру WIN32_FIND_DATA. Определение структуры WIN32_FIND_DATA приведено в описании функции FindFirstFile.

Ip Find File Data

LPVOID. Указатель на данные файла. Тип этого указателя определен информационным уровнем, указанным в параметре flnfoLevelld.

fSearchOp

FINDEX_SEARCH_OPS. Тип фильтрации, которая должна быть выполнена дополнительно к согласованию с символами-заместителями. Этот параметр может иметь одно из значений, перечисленных в табл. 17.17.

Таблица 17.17. Значения параметра fSearchOp функции FindFirstFileEx

Значение

Описание

FindExSearchNameMatch

Искать файл, который соответствует указанному имени. При этом параметр /pSearchF/'/fer должен иметь значение NULL.

FindExSearchLimrtToDevices

Возвращать только имена устройств. К именам устройств обычно можно получить доступ посредством соглашения \\,\<пате>. При этом параметр dwAdditionalFlags не может иметь значение FIND_FIRST_EX_CASE_SENSITIVE.

FindExSearchLimitToDirectories

Это — консультативный флажок. Если файловая система поддерживает фильтрацию имен каталогов, функция ищет файл, который соответствует указанному имени файла и является каталогом. Если файловая система не поддерживает фильтрацию имен каталогов, этот флажок игнорируется. При этом параметр /pSearchFl'/fer должен быть равен NULL. Если требуется фильтрация имен каталогов, этот флажок можно использовать во всех файловых системах; однако чтобы определить, возвратила ли функция дескриптор каталога, а не файла, необходимо исследовать данные атрибута файла, хранимые в параметре IpFindFileData.

IpSearchFilter

LPVOID. Если для поиска требуется структурированная информация, параметр IpSearchFilter указывает на переменную, содержащую критерии поиска. В настоящее время нет ни одной операции, для которой требовалась бы расширенная информация поиска; поэтому данный параметр должен иметь значение NULL.

dwAdditionalFlags

DWORD. Дополнительные флажки поиска. Для поиска с учетом регистра используется флажок FIND_FIRST_EX_CASE_SENSITIVE.

Возвращаемое значение

HANDLE. В случае успешного выполнения функция возвращает дескриптор, который может использоваться в функции FindNextFile; в ином случае возвращаемое значение — INVALID_HANDLE_VALUE.

Включаемый файл

winbase.h

См. также

FindFirstFile, FindNextFile, FindClose

Пример

В следующем фрагменте кода показан еще один вариант использований функций FindFirstFileEx и FindFirstFile.

FindFirstFileEx (  IpFileName,   FindExInfoStandard,  IpFindData, FindExSearchNameMatch,  NULL,   0   );

FindFirstFile (   IpFileName ,   IpFindData ) ;

FindNextChanqeNotification            Windows 98   • Windows 2000

Описание

Функция FindNextChangeNotification отправляет операционной системе запрос, в соответствии с которым система, обнаружив соответствующее изменение, должна вырабатывать сигнал об изменении состояния дескриптора контроля изменений. В приложении эта функция используется для установки состояния ожидания очередного изменения того же типа, который определен в вызове функции FindFirstChangeNotification. После успешного выполнения функции FindNextChangeNotification приложение может перехватывать сообщения о происшедших изменениях с помощью функции WaitForSingleObject или WaitForMultipleObjects. В приложении не следует вызывать функцию FindNextChangeNotification более одного раза на одном и том же дескрипторе без обращения к функции WaitForSingleObject или WaitForMultipleObjects.

Синтаксис

BOOL FindNextChangeNotification( HANDLE hChange )

Параметры

hChange

HANDLE. Дескриптор контроля изменений, созданный в предыдущем вызове функции FindFirstChangeNotification.

Возвращаемое значение           

BOOL. В случае успешного выполнения — TRUE; в ином случае — FALSE.

Включаемый файл                 

winbase.h

См. также          

FindCloseChangeNotification, FindFirstChangeNotification, WaitForMultipleObjects, WaitForSingleObject

Пример            

См. пример для функции FindFirstChangeNotification.

FindNextFile                             Windows 98   • Windows 2000

Описание         

Функция FindNextFile ищет следующий файл, соответствующий искомому имени. Эта функция может применяться только после вызова функции FindFirstFile. В приложении функция FindNextFile вызывается повторно до тех пор, пока не будут обработаны все файлы и функция не вернет значение FALSE.

Синтаксис

BOOL FindNextFile( HANDLE hHndFile, LPWIN32_FIND_DATA Ipffd )

Параметры

hFmdFile

HANDLE. Дескриптор поиска, возвращенный после предыдущего вызова функции FindFirstFile.

Ipffd

LPWIN32_FIND_DATA. Указатель на структуру   WIN32_FIND_DATA,которая принимает информацию о найденном файле или подкаталоге. Эта структура может использоваться в последующих вызовах функции Find-NextFile для ссылки на найденный файл или каталог. Определение структуры WIN32 FBVD_DATA приведено в описании функции FindFirstFile.

Возвращаемое значение

BOOL. В случае успешного выполнения — TRUE; в ином случае — FALSE.

Включаемый файл

winbase.h

См. также

FindClose, FindFirstFile, FindFirstFileEx, GetFileAttributes, SetFileAttributes

Пример

См. пример для функции FindFirstChangeNotification.

FlushFileBuffers                         + Windows 98   + Windows 2000

Описание

Функция FlushFileBuffers вызывает запись всех буферизированных данных в файл и очищает буферы файла.

Синтаксис

BOOL FlushFileBuffers( HANDLE hFile )

Параметры

hFile

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

Возвращаемое значение

BOOL. В случае успешного выполнения — TRUE; в ином случае — FALSE.

Включаемый файл

winbase.h

См. также

WriteFile, WriteFileEx

Пример

См. пример для функции LockFile.

FlushVipwnfFilp                         Windows 98   • Windows 2000

Описание

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

Синтаксис

BOOL FlushViewOfFile( LPCVOID IpvBase, DWORD dwFlush )

Параметры

IpvBase

LPCVOID. Указатель на базовый адрес байтов, которые должны быть переписаны на диск из отображенного в память представления файла.

dw Flush

DWORD. Число байтов, которое должно быть выведено на диск. Если этот параметр установлен равным 0, вывод файла выполняется от базового адреса до конца отображения.

Возвращаемое значение

BOOL. В случае успешного выполнения — TRUE; в ином случае — FALSE.

Включаемый файл

winbase.h

См. также

MapViewOfFile, UnmapViewOfFile

Пример

См. пример для функции MapViewOfFile.

GetFileAttributes                        Windows 98   4 Windows 2000

Описание

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

Синтаксис

DWORD GetFileAttributes( LPCTSTR IpszFileName )

Параметры

IpszFileName

LPCTSTR. Указатель на строку с нулевым символом в конце, содержащую имя файла или каталога. Длина строки не должна превышать МАХ_РАТН символов. В приложении Windows 2000 можно обойти это ограничение, вызвав широкую (W) версию функции GetFileAttributes и поместив в начале строки символы "\\?\" или "\\7\UNC\" для отмены интерпретации пути.

Возвращаемое значение

DWORD. В случае успешного выполнения — атрибуты указанного файла; в ином случае — OxFFFFFFFF. Атрибуты можно определить, используя двоичный оператор AND (&) со значениями, приведенными в табл. 17.16.

Включаемый файл

winbase.h

См. также

GetFileAttributesEx, FindFirstFile, FindFirstFileEx, FindNextFile, SetFileAttributes

Пример

См. пример для функции SetFileAttributes.

GetFileAttributesEx                      Windows 98   • Windows 2000

Описание

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

Синтаксис

BOOL GetFileAttributesEx( LPCTSTR IpszFileName, GET_FILEEX_INFO_LEVELS flnfoLevelld, LPVOID IpFilelnformation )

Параметры

i

IpszFileName

LPCTSTR. Указатель на строку с нулевым символом в конце, содержащую имя файла или каталога. Длина строки не должна превышать МАХ_РАТН символов. В приложении Windows 2000 можно обойти это ограничение, вызвав широкую (W) версию функции GetFileAttributes и поместив в начале строки символы "\\?\" или "\\7\UNC\" для отмены интерпретации пути.

flnfoLevelld

GET_FILEEX_INFO_LEVELS. Значение типа перечисления, которое определяет состав атрибутов, возвращаемых функцией. В настоящее время определено единственное значение — GetFileExInfoStandard, — в соответствии с которым функция возвращает стандартный набор атрибутов в структуре WIN32_FILE_ATTRIBUTE_DATA. В будущих версиях могут быть определены другие значения.

IpFilelnformation

LPVOID. Указатель на буфер, который принимает информацию об атрибутах. В настоящее время определена единственная структура — WIN32_FILE_ATTRIBUTE_DATA Определение структуры WIN32_FILE_ATTRIBUTE_DATA приведено ниже.

Возвращаемое значение

BOOL. В случае успешного выполнения — TRUE; в ином случае — FALSE.

Включаемый файл

winbase.h

См. также

FindFirstFile, FindFirstFileEx, FindNextFile, SetFileAttributes

Определение WIN32_FILE_ATTRIBUTE_DATA

typedef struct    WIN32_FILE_ATTRIBUTE_DATA{

DWORD         dwFileAttributes ;

FILETIME f tCreationTime ;

FILETIME ftLastAccessTime;

FILETIME ftLastWriteTime;

DWORD         nFileSizeHigh;

DWORD         nFileSizeLow; }    WIN32_FILE_ATTRIBUTE_DATA,   *LPWIN32_FILE_ATTRIBOTE_DATA;

Члены

dwFileAttributes

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

ftCreationlime

FILETIME. Указывает время создания файла или каталога.

ftLastAccessTime

FILETIME. Для файла — дата и время выполнения последней операции чтения из файла или записи в него. Для каталога — дата и время создания каталога. Дата всегда является правильной; однако значение времени устанавливается равным 00:00:00 часов.

ftLastWriteTime

FILETIME. Для файла это значение указывает дату и время выполнения последней записи в файл. Для каталога это значение указывает дату и время создания каталога.

nFileSizeHigh

DWORD. Старшее двойное слово переменной с обозначением размера файла.

nFileSizeLow

DWORD. Младшее двойное слово переменной с обозначением размера файла.

GetFilelnformationByHandle            «• Windows 98   + Windows 2000

Описание

Функция GetFilelnformationByHandle позволяет получить информацию о файле, который обозначен дескриптором файла.

Синтаксис

BOOL GetFileInformationByHandle( HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION IpFilelnformation )

Параметры

hFile

HANDLE. Дескриптор файла, для которого должна быть получена информация.

IpFilelnformation

LPBY HANDLE_FILE_INFORMATION. Указатель на структуру BY HANDLE_FILE_INFORMATION, которая принимает информацию о файле. Определение структуры BY_HANDLE_FILE_INFORMATION приведено ниже.

Возвращаемое значение

BOOL. В случае успешного выполнения — TRUE; в ином случае — FALSE.

Включаемый файл

winbase.h

См. также

GetFileTime, GetFileSize, GetFUeType

Определение BY_HANDLE_FILE_INFORMATION

typedef struct    BY HANDLE FILE INFORMATION {

DWORD         dwFileAttributes ;

FILETIME ftCreationTime;

FILETIME f tLastAccessTime ;

FILETIME ftLastWriteTime;

DWORD        dwVolumeSerialNumbar;

DWORD         nFileSizeHigh;

DWORD         nFileSizeLow;

DWORD         nNumberOf Links ;

DWORD         nFilelndexHigh;

DWORD        nFilelndexLow; }   BY_HANDLE_FILE_INFORMATION;

Члены

dwFileAttributes

DWORD. Атрибуты файла. Этот член может иметь одно или несколько» значений, перечисленных в табл. 17.16. Для определения установлении атрибутов применяется двоичный оператор AND (&).

ftCreationTime

FILETIME. Время создания файла. Если применяемая файловая система не поддерживает это значение времени, член ftCreationTime равен 0. Определение структуры FILETIME приведено в описании функции Сот-pareFileTime.

ftLastAccessTime

FILETIME. Время последнего доступа к файлу. Если основополагающая файловая система не поддерживает это значение времени, член ftLast-AccessTime равен 0. Определение структуры FILETIME приведено в описании функции CompareFileTime.

ftLastWriteTime

FILETIME. Время выполнения последней записи в файл. Определение структуры FILETIME приведено в описании функции CompareFileTime.

dw VolumeSerialNumber

DWORD. Порядковый номер тома, который содержит файл.

nHleSizeffigh

DWORD. Старшие 32 бита размера файла.

nFileSizeLow

DWORD. Младшие 32 бита размера файла.

nNumberOfLinks

DWORD. Число ссылок на файл. Для файловых систем FAT и HPFS этот член всегда равен 1. Для файловых систем NTFS этот член может иметь значение больше единицы.

nFilelndexHigh

DWORD. Старшие 32 бита уникального идентификатора, связанного с файлом.

nFilelndexLow

DWORD. Младшие 32 бита уникального идентификатора, связанного с файлом. Этот идентификатор и порядковый номер тома однозначно определяют файл. После открытия файла процессом идентификатор остается неизменным до закрытия файла. В приложении можно использовать этот идентификатор и порядковый номер тома для того, чтобы прове рить, относятся ли два дескриптора к одному и тому же файлу.