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

11.5.1. Проверка существования файла

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

Для такого рода проверки используется функция FileExists:

if(FileExists(FileName))... //если файл существует

Под управлением MS-DOS аналогичную роль выполняла функция access:

k=access(имя_файла,0); //k=0,если файл существует

11.5.2. Создание нового файла

Для создания нового файла и его одновременного открытия используется функция FileCreate:

int fHandle = FileCreate(FileName);

Если возвращаемое значение положительно, то работа по созданию файла завершена успешно. В случае ошибки возвращаемое значение равно –1.

11.5.3. Открытие существующего файла

Для открытия существующего файла используется функция FileOpen:

int fHandle = FileOpen(FileName, Mode);

Здесь Mode – целочисленная константа, определяющая режим работы файла. Список мнемонических констант, предусмотренных в системе BCB, приведен в таблице 11.1.

Таблица 11.1

Константа

Режим

fmOpenRead

Файл открывается только для чтения

fmOpenWrite

Файл открывается только для записи

fmOpenReadWrite

Файл открывается и для записи, и для чтения

fmShareExclusive

Файл только для личного использования

fmShareDenyWrite

Файл доступен другим приложениям для чтения

fmShareDenyRead

Файл доступен другим приложениям для записи

fmShareDenyNone

Файл доступен всем и для чтения, и для записи

Если значение, возвращаемое функцией равно -1, то открытие не состоялось.

11.5.4. Чтение из открытого файла

Для чтения двоичных данных из открытого файла используется функция FileRead:

int k = FileRead(fHandle, buf, count);

Здесь buf – указатель типа void* на начало буфера, в который читаются данные;

count – количество запрашиваемых байтов;

k – количество реально прочитанных байтов.

11.5.5. Запись в открытый файл

Для записи двоичных данных в открытый файл используется функция FileWrite:

k = FileWrite(fHandle, buf, count);

Здесь buf – указатель типа void* на начало буфера, из которого пишутся данные;

count – количество байтов, подлежащих записи;

k – количество реально записанных байтов.

Если k=-1, то произошла какая-то ошибка.

11.5.6. Перемещение указателя файла

Указатель файла перемещают в нужную позицию для организации прямого доступа к нужным данным. Для этой цели используется функция FileSeek:

int k = FileSeek(fHandle, delta, pos);

Здесь delta – смещение в байтах, на которое нужно переместить указатель файла;

pos – точка отсчета, относительно которой производится смещение (0 – от начала файла, 1 – от текущей позиции, 2 – от конца файла);

k – новая текущая позиция.

Для определения длины файла можно воспользоваться обращением:

fLength = FileSeek(fHandle,0,2);

Под управлением MS-DOS перемещение указателя в двоичном файле выполняла функция fseek:

fseek(f1,delta,pos); //f1 – указатель типа FILE