Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4. Файлы, файловые системы - презентация

.pdf
Скачиваний:
86
Добавлен:
11.04.2014
Размер:
224 Кб
Скачать
☆

Открываем файл

–HANDLE — дескриптор открытого файла,

INVALID_HANDLE_VALUE при ошибке

●CreateFile(

–LPCTSTR — имя файла,

–DWORD — желаемый доступ к файлу

●GENERIC_READ и/или GENERIC_WRITE

–DWORD — режим разделения: могут ли (и с какими правами) открывать этот файл другие процессы (одновременно с текущим)

●0 — нельзя, либо FILE_SHARE_READ и/или

41 FILE_SHARE_WRITE

Открываем файл

–LPSECURITY_ATTRIBUTES — может быть NULL

–DWORD — режим создания: одно из следующих значений

●CREATE_ALWAYS — создает новый файл, если был то содержимое стирается;

●CREATE_NEW — только создать новый, ошибка если файл существует;

●OPEN_ALWAYS — открывает файл сохраняя содержимое, создавая при необходимости,

●OPEN_EXISTING — открыть файл, ошибка если его нет

●TRUNCATE_EXISTING — открыть существующий файл,

42

стерев его содержимое

 

Открываем файл

–DWORD — атрибуты файла, обычно

FILE_ATTRIBUTE_NORMAL

–HANDLE — дескриптор файла-шаблона: если

создается новый файл, то для него и этот дескриптор не NULL, то атрибуты и права доступа для нового файла берутся из файла-шаблона.

)

43

Задание

●Объявите переменную myFile и сохраните в нее дескриптор файла MyFile.txt при следующих условиях:

–файл открывается для чтения и записи;

–если его не было, то он создается;

–если файл был, то если переменная Clear равна 1 то его содержимое стирается, иначе сохраняется

–совместный доступ к файлу запрещен

44

Открываем файл

DWORD dwCreate=OPEN_ALWAYS;

if (Clear) dwCreate=CREATE_ALWAYS;

HANDLE myFile = CreateFile("MyFile.txt", GENRIC_READ | GENERIC_WRITE, NULL, NULL, dwCreate, FILE_ATTRIBUTE_NORMAL, NULL);

45

Чтение/запись в файл

–BOOL - 0 при ошибке

●ReadFile/WriteFile(

–HANDLE — дескриптор файла,

–LPVOID — указатель на начало данных (буфера) для записи (чтения)

–DWORD — количество байт для записи (чтения)

–LPDWORD — указатель, по которому будет записано количество реально записанных (прочитанных) байт

–LPOVERLAPPED — указатель на структуру для асинхронного ввода/вывода, обычно NULL

46 )

Закрываем дескриптор

–BOOL — 0 при ошибке

●CloseHandle(

–HANDLE — закрываемый дескриптор

)

47