Иллюстрированный самоучитель по MatLab

Позиционирование файла

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

Таким образом, указатель обеспечивает позиционирование файлов. Имеется ряд функций позиционирования:

  • eofstat = feof(fid) – проверяет, достигнут ли конец файла с идентификатором fid. Возвращает 1, если указатель установлен на конец файла, и 0 – в противном случае;
  • message = ferror(fid) – возвращает сведения об ошибке в виде строки message. Аргумент fid – идентификатор открытого файла (см. функцию fopen с ее подробным описанием);
  • message = f error (f id,'clear') – очищает индикатор ошибки для заданного файла;
  • [message,errnum] = ferror(.) – возвращает номер ошибки errnum последней операции ввода-вывода для заданного файла.

Если последняя операция ввода-вывода, выполненная для определенного значением fid файла, была успешной, значение message – это пустая строка, a errnum принимает значение 0.

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

Пример:

>> fid=fopen('c:\examplel'.'a+')
fid =
3
>> t= fread(3,[4.5])
t =
Empty matrix: 4-by-0
>> ferror(3)
ans =
Is the file open for reading?...
  • frewind(fid) – устанавливает указатель позиции в начало файла с идентификатором fid;
  • status-fseek(fid,offset,origin) – устанавливает указатель в файле с идентификатором fid в заданную позицию – на байт, указанный параметром offset относительно origin.

Аргументы:

  • fid – идентификатор файла, возвращенный функцией fopen;
  • offset – значение, которое интерпретируется следующим образом:
    • offset>0 – изменяет позицию указателя на offset байт в направлении к концу файла;
    • offset=0 – не меняет позицию указателя;
    • offset<0 – изменяет позицию указателя на offset байт в направлении к началу файла;
  • origin – аргумент, принимающий следующие значения:
    • 'bof' или -1 – начало файла;
    • 'cof' или 0 – текущая позиция указателя в файле;
    • ' eof' или 1 – конец файла;
  • status – выходной аргумент. Принимает значение 0, если операция fseek произошла успешно, и – 1 в противном случае. Если произошла ошибка, используйте функцию ferror для получения более подробной информации;
  • position=ftel I (fid) – возвращает позицию указателя для файла с идентификатором fid, полученным с помощью функции fopen. Выходной аргумент position – неотрицательное целое число, определяющее позицию указателя в байтах относительно начала файла. Если запрос был неудачным, position принимает значение – 1. Используйте функцию ferror для отображения характера ошибки.

Примеры:

>> f id-fopen('c:\example'.'a+')
fid =
3
>> count = fwrite(3,magic(6))
count = 36
>> ftelK3)
ans =
36
>> frewind(3):ftell(3)
ans =
0
>> fseek(3.12.0);ftell(3)
ans=
12
>> feof(3)
ans =
0
>> fclose(3)
ans =
0
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.