Spec-Zone.ru › Octave 9

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 и любых FID, связанных с gnuplot.

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

: tf = is_valid_file_id (fid)

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

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

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

Spec-Zone.ru

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