Spec-Zone.ru › Octave 9

Next: Простой вывод, Up: Функции ввода-вывода в стиле C [Оглавление][Индекс]

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, малая эндианность IEEE и т. д.) и кодировкой файла и возвращает целочисленное значение, которое может быть использовано для последующей ссылки на файл. В случае ошибки fid устанавливается в −1, а msg содержит соответствующее сообщение об ошибке системы. mode — строка из одного или двух символов, определяющая, открывается ли файл для чтения, записи или того и другого. encoding — строка символов с допустимым идентификатором кодировки. Эта кодировка используется при чтении или записи строк в файл. По умолчанию используется UTF-8.

Второй вариант функции 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.

"ieee-le" или "l"

Формат малой эндианности IEEE.

При открытии нового файла, который еще не существует, разрешения будут установлены на 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, и любых FIDs, связанных с gnuplot.

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

: tf = is_valid_file_id (fid) ¶

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

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

Next: Простой вывод, Up: Функции ввода-вывода в стиле C [Оглавление][Индекс]

© 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/v9.2.0/Opening-and-Closing-Files.html

Spec-Zone.ru

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