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.0. This page might be outdated.
See the recommended documentation of this function

Справка Scilab >> Файлы: функции ввода/вывода > mopen

mopen

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

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

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

Аргументы

file

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

mode

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

swap

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

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

err

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

значение ошибки: сообщение об ошибке:
0 нет ошибки
-1 больше нет логических модулей
-2 не могу открыть файл
-3 больше нет памяти
-4 некорректное имя
-5 некорректный статус
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 — 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:
Thu Oct 02 14:01:08 CEST 2014