Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2025.0.0 - Русский


mopen

открывает файл в Scilab'е

Синтаксис

[fd, err] = mopen(file [, mode, swap ])

Аргументы

file

символьная строка, содержащая имя файла, который требуется открыть.

mode

символьная строка, определяющая требуемый режим доступа к файлу.

swap

скаляр. Если есть swap и swap = 0, тогда автоматическая перестановка байтов отключается.

Значение по умолчанию равно 1.

err

скаляр. Индикатор ошибки.

значение ошибки: сообщение об ошибке:
0 нет ошибки
-1 больше нет логических модулей
-2 не могу открыть файл
-3 больше нет памяти
-4 некорректное имя
-5 некорректный статус
When this output argument is given, no error will be raised by the function.
fd

скаляр: дескриптор файла (это положительное целое число).

Описание

Функция mopen может использоваться для того, чтобы открыть файл file способом, совместимым с C-процедурой fopen. Без аргумента swap файл file предполагается закодированным в формате IEEE "с прямым порядком байтов" и байты данных автоматически переставляются, если необходимо соответствовать формату IEEE процессора.

Параметр mode управляет типом доступа к потоку. Этот параметр может иметь одно из следующих значений:

r

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

w

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

a

открывает файл для добавления записи. Создаёт файл если он не существует.

r+

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

w+

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

a+

открывает файл как на чтение, так и на добавление записи. Создаёт файл если он не существует.

Кроме того могут быть использованы следующие символы для определения типа файла:

t

текстовый файл.

b

двоичный файл (по умолчанию).

По умолчанию режим доступа 'rb' (чтение двоичного файла).

Заметьте: в Windows, в режиме текстового файла комбинации CR (возврат каретки) - LF (конец строки) преобразуются в LF при чтении, а LF преобразуются в комбинации CR-LF при записи.

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

Когда вы открываете файл для добавления записи (то есть, когда параметр mode равен a или a+), то невозможно перезаписать информацию, которая уже есть в файле. Вы можете использовать функцию mseek для смены положения указателя позиции в файле в любое место файла, но, когда вывод записан в файл, текущий указатель позиции в файле игнорируется. Весь вывод записывается в конец файла и указатель позиции в файле перемещается в конец вывода.

Чтобы открыть файлы способом, совместимым с Fortran-функциями используйте функцию file.

Примеры

// открываем SCI+'/ACKNOWLEDGEMENTS' как текст только для чтения
fd_r = mopen(SCI+'/ACKNOWLEDGEMENTS', 'rt')

// читаем пять строк в fd_r
mgetl(fd_r, 5)

// другой способ чтения файла
// здесь читаются пять слов
mfscanf(5, fd_r, '%s')

// закрываем дескриптор файл, связанный с SCI+'/ACKNOWLEDGEMENTS'
mclose(fd_r);
// открываем файл как текст с возможностью записи
fd_w = mopen(TMPDIR+'/write.txt', 'wt');

// записываем строчку в fd_w
mputl('This is a line of text', fd_w);
mclose(fd_w);

// читаем текст
fd_r2 = mopen(TMPDIR+'/write.txt', 'rt');
mgetl(fd_r2)
mclose(fd_r2);
// читаем/записываем файл как двоичный

// сперва мы запишем файл
fd_wb = mopen(TMPDIR+'/writeread.bin', 'wb')

// положим значения в двоичном виде
mput(2003, 'l', fd_wb);
mput(2008, 'i', fd_wb);
mput(2012, 's', fd_wb);
mput(98, 'c', fd_wb);

// закроем дескриптор файла, связанный с TMPDIR+'/writeread.bin'
mclose(fd_wb);

// прочитаем файл
fd_rb = mopen(TMPDIR+'/writeread.bin', 'rb')

mget(fd_rb, 'l')
mget(fd_rb, 'i')
mget(fd_rb, 's')
mget(fd_rb, 'c')

mclose(fd_rb)

Смотрите также

  • file — управление файлами
  • mclose — закрывает открытые файлы
  • merror — проверяет индикатор ошибок доступа к файлу
  • meof — проверяет достигнут ли конец файла
  • mfprintf — преобразует, форматирует и записывает данные в файл
  • fprintfMat — записывает матрицу в файл
  • mfscanf — считывает входные данные из потока, указанного указателем потока (интерфейс с C-функцией fscanf)
  • fscanfMat — считывает матрицу из текстового файла
  • mget — проверяет числа в двоичом файле и возвращает их в виде десятичных чисел
  • mgetl — считывает строки из текстового файла
  • mgetstr — считывает символьную строку из файла
  • mprintf — converts, formats, and writes data to the main scilab window
  • mput — записывает байт или слово в заданном двоичном формате
  • mputl — записывает строки в текстовый файл
  • mputstr — запись отдельного текста в открытый файл
  • mseek — устанавливает текущую позицию в двоичном файле
  • mtell — возвращает смещение текущего байта относительно начала файла
  • mdelete — удаляет файлы
Report an issue
<< mgetstr Файлы: функции ввода/вывода mput >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 24 11:18:33 CEST 2024