Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語 -

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> Files : Input/Output functions > mopen

mopen

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

Последовательность вызова

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

Аргументы

file

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

mode

символьная строка, которая контролирует открыт ли файл для чтения (r), записи (w) или дополнения (a) и открыт ли файл для обновления (+). mode может также включать в себя параметр b для указания бинарного файла.

Значение по умолчанию -- 'rb'.

swap

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

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

err

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

значение ошибки: сообщение об ошибке:
0 нет ошибки
-1 больше нет логических модулей
-2 не могу открыть файл
-3 больше нет памяти
-4 некорректное имя
-5 некорректный статус
fd

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

Описание

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

Параметр mode управляет разрешённым доступом к потоку. Этот параметр может иметь одно из следующих значений. В этом списке значений символ b обозначает бинарный файл.

r

открывает файл для чтения.

rb

открывает бинарный файл для чтения.

rt

открывает текстовый файл для чтения.

w

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

wb

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

wt

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

a или ab

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

r+ или r+b

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

w+ or w+b

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

a+ или a+b

добавляет запись (открывает файл для обновления, записывая в конце файла, или создаёт файл для записи).

Когда вы открываете файл для обновления, вы можете выполнять операции как ввода, так и вывода в результирующем потоке. Однако за операцией вывода не может напрямую идти операция ввода без операции позиционирования файла (функция 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 — file management
  • 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 — удаляет файлы
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Oct 01 17:41:09 CEST 2012