Spec-Zone.ru › Octave 6

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" к строке режима, чтобы открыть сжатый файл (gzipped) для чтения или записи. Для этого также необходимо открыть файл в двоичном режиме.

Параметр 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.

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

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

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

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

: is_valid_file_id (fid)

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

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

© 1996–2022 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/v6.4.0/Opening-and-Closing-Files.html

Spec-Zone.ru

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