Spec-Zone.ru › Octave 8

14.2.1 Открытие и Закрытие Файлов

При чтении данных из файла он должен быть сначала открыт для чтения, а при записи в файл — для записи. Функция fopen возвращает указатель на открытый файл, готовый к чтению или записи. После того, как все данные были прочитаны или записаны в открытый файл, он должен быть закрыт. Эту операцию выполняет функция fclose. Следующий код иллюстрирует базовый шаблон записи в файл, но очень похожий шаблон используется при чтении файла.

filename = "myfile.txt";
fid = fopen (filename, "w");
# Do the actual I/O here…
fclose (fid);
: fid = fopen (name) ¶
: fid = fopen (name, mode) ¶
: fid = fopen (name, mode, arch) ¶
: fid = fopen (name, mode, arch, encoding) ¶
: [fid, msg] = fopen (…) ¶
: fid_list = fopen ("all") ¶
: [file, mode, arch, encoding] = fopen (fid) ¶

Открытие файла для низкоуровневого ввода-вывода или запроса открытых файлов и дескрипторов файлов.

Первый вариант функции fopen открывает указанный файл в заданном режиме (чтение-запись, чтение-только, и т.д.), с указанием интерпретации архитектуры (IEEE big endian, IEEE little endian и т.д.) и кодировки файла, и возвращает целое значение, которое может быть использовано для обращения к файлу позднее. При возникновении ошибки, fid устанавливается в -1, а msg содержит соответствующее системное сообщение об ошибке. mode — строка из одного или двух символов, которая определяет, открывается ли файл для чтения, записи или для обоих. encoding — строка с допустимым идентификатором кодировки. Эта кодировка используется при чтении или записи строк в файл. По умолчанию используется та же кодировка, что и для чтения файлов .m, для интерпретации пользовательских файлов.

Второй вариант функции fopen возвращает вектор идентификаторов файлов, соответствующих всем открытым в данный момент файлам, исключая потоки stdin, stdout, и stderr.

Третий вариант функции fopen возвращает информацию об открытом файле по его идентификатору.

Например,

myfile = fopen ("splat.dat", "r", "ieee-le");

открывает файл splat.dat для чтения. Если необходимо, бинарные числовые значения будут читаться, предполагая, что они хранятся в формате IEEE с младшим битом впереди, а затем преобразовываются в локальный представление.

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

Возможные значения mode:

‘r’ (по умолчанию)

Открыть файл для чтения.

‘w’

Открыть файл для записи. Предыдущее содержимое удаляется.

‘a’

Открыть или создать файл для записи в конце файла.

‘r+’

Открыть существующий файл для чтения и записи.

‘w+’

Открыть файл для чтения или записи. Предыдущее содержимое удаляется.

‘a+’

Открыть или создать файл для чтения или записи в конце файла.

Добавьте "t" к строке режима, чтобы открыть файл в текстовом режиме, или "b" для открытия в двоичном режиме. В системах Windows чтение и запись в текстовом режиме автоматически преобразуют символы перевода строки в соответствующие символы конца строки для системы (возврат каретки-перевод строки в Windows). По умолчанию, когда режим не указан, используется двоичный режим.

Кроме того, вы можете добавить "z" к строке режима, чтобы открыть сжатый файл (gzip) для чтения или записи. Для этого вы также должны открыть файл в двоичном режиме.

Параметр arch — это строка, определяющая формат данных по умолчанию для файла. Допустимые значения для arch:

"native" или "n" (по умолчанию)

Формат текущей машины.

"ieee-be" или "b"

Формат IEEE big endian.

"ieee-le" или "l"

Формат IEEE little endian.

При открытии нового файла, которого еще нет, разрешения будут установлены на 0666 - umask.

Примечание по совместимости: Octave открывает файлы с использованием буферизованного ввода-вывода. Небольшие записи накапливаются до тех пор, пока внутренний буфер не заполнится, а затем все записывается в одной операции. Это очень эффективно и повышает производительность. MATLAB, однако, открывает файлы с использованием сбрасываемого ввода-вывода, где каждая операция записи выполняется немедленно. Если операция записи должна быть выполнена немедленно после записи данных, то после записи следует вызвать fflush для сброса внутреннего буфера.

См. также: fclose, fgets, fgetl, fscanf, fread, fputs, fdisp, fprintf, fwrite, fskipl, fseek, frewind, ftell, feof, ferror, fclear, fflush, freport, umask.

: status = fclose (fid) ¶
: status = fclose ("all") ¶

Закрыть файл, указанный дескриптором файла fid.

При успешном выполнении fclose возвращает 0, в противном случае — -1. Второй вариант вызова fclose закрывает все открытые файлы, за исключением stdin, stdout, stderr, и любых идентификаторов файлов, связанных с gnuplot.

См. также: fopen, fflush, freport.

: tf = is_valid_file_id (fid) ¶

Возвращает true, если fid ссылается на открытый файл.

См. также: freport, fopen.

© 1996–2023 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v8.1.0/Opening-and-Closing-Files.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API