fopen

Открытый файл

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

fopen(filename | TempFile, <Read | Write | Append>, <Bin | Text | Raw>, <Encoding = "encodingValue">)

Описание

fopen(filename, format) открывает существующий файл для чтения в заданном формате. Ошибка повышена, если никакой файл с указанным именем не найден, или формат файла не совпадает с заданным format. Если файл будет в gzip - сжатый формат и его концы имени в “.gz”, это будет прозрачно несжатым после чтения.

fopen(filename) открывает существующий файл для чтения. Файл должен содержать данные в тексте или двоичном формате MuPAD® (опционально сжатый), fopen автоматически идентифицирует формат файла в этом случае. Файл не должен использоваться в качестве необработанного файла.

fopen(filename, mode, format) открывает файл для записи в заданном формате, если режим дан как Read или Append. Если никакой файл с указанным именем не существует, новый файл создается. Если концы имени файла в “.gz”, все данные, записанные в файл, будут прозрачно сжаты в совместимом формате gzip.

fopen(TempFile, format) создает и открывает временный файл для записи в заданном формате. Опция Read и Append не позволена в этом случае. Если никакой формат не дан, Bin используется. Используйте fname, чтобы запросить подлинное имя и местоположение временного файла. Cf. Пример 3.

fopen(..., Encoding = "encodingValue") использует заданное кодирование. Для поддерживаемой кодировки см. Опции. Можно использовать эту опцию с ранее заданными синтаксисами для текстовых файлов.

В режиме записи (использующий одну из опций Write или Append), переменная окружения рассматривается WRITEPATH, если никакой временный файл не создается. Если это имеет значение, новый файл создается (или существующий файл разыскивается) в соответствующей папке. В противном случае это создается/ищется в “рабочей папке”.

Обратите внимание на то, что значение “рабочей папки” зависит от операционной системы. В системах Windows® и в системах Mac OS X, “рабочая папка” является папкой, где MATLAB® установлен. В системах UNIX® это - текущая рабочая папка, в которой был запущен MATLAB. Когда запущено с меню или настольного элемента, это обычно - домашняя папка пользователя.

Примечание

В режиме чтения fopen не ищет файлы в папках, данных путем к библиотеке.

Временный файл создается в специальной папке. Эта папка и имя файла системно-зависимы.

Также абсолютные пути обрабатываются fopen.

Дескриптор файла, возвращенный fopen, может использоваться различными функциями, такими как fname, fclose, fread, fprint, read, write и т.д.

Файл, открытый fopen, должен быть закрыт fclose после использования. Это содержит также для временных файлов.

fopen принимает свои аргументы в любом порядке, не только в порядке, используемом выше.

Взаимодействия среды

Функция чувствительна к переменной окружения WRITEPATH при создании файлов, которые не являются временными (временные файлы создаются через TempFile). Если WRITEPATH имеет значение в режиме записи (использующий опции Write или Append), файл создается в соответствующей папке. В противном случае файл создается в “рабочей папке”. Временный файл создается в специальной папке.

При использовании Write или Append, fopen создает новый файл, если никакой файл под именем не существует.

Примеры

Пример 1

Откройте файл test для записи. С опцией Write не необходимо, чтобы файл test существовал. По умолчанию файл открыт как двоичный файл:

fid := fopen("test", Write):

Запишите строку в файл и закройте его:

fprint(fid, "a string"):
fclose(fid):

Добавьте другую строку к файлу:

fid := fopen("test", Append):
fprint(fid, "another string"):
fclose(fid):

Двоичный файл не может быть открыт как текстовый файл для добавления данных:

fid := fopen("test", Append, Text)

Однако это может быть открыто как текстовый файл с опцией Write. Существующий двоичный файл перезаписывается с текстовым файлом:

fid := fopen("test", Write, Text):
fclose(fid):
delete fid:

Пример 2

fopen не удается открыть несуществующие файлы для чтения. Здесь, примите, что файл “xyz” не существует:

n := fopen("xyz")

Примите, что файл “test”, созданный в Примере 1, существует. Это может быть открыто для чтения успешно:

n := fopen("test")

fclose(n):
delete n:

Пример 3

Откройте временный файл, запишите 10 байтов двоичных данных в него и закройте его. fname используется, чтобы запросить имя файла:

fd := fopen(TempFile, Raw):
writebytes(fd, [i $ i=1..10]):
fn := fname(fd):
fclose(fd):
fn

Вновь откройте файл и считайте данные:

fd := fopen(fn, Read, Raw):
readbytes(fd);

fclose(fd):
delete fd, fn:

Пример 4

Чтобы задать кодирование, чтобы читать и записать данные, используйте Encoding. Опция Encoding применяется только к текстовым файлам, которые открыты с помощью имени файла и не дескриптора файла. Создайте временный файл и напишите строке "abcäöü" в кодировании "UTF-8":

fid := fopen(TempFile, Text, Write, Encoding="UTF-8"):
file := fname(fid):
fprint(Unquoted, fid, "abcäöü"):
fclose(fid):

Используйте ftextinput, чтобы считать данные с заданным кодированием:

ftextinput(file, Encoding="UTF-8")

Если вы не задаете кодирование, системное кодирование по умолчанию используется. Таким образом ваш вывод может отличаться от показанного затем. Символы, нераспознанные системным кодированием по умолчанию, заменяются символом замены по умолчанию для того кодирования:

fid := fopen(TempFile, Text, Write):
file := fname(fid):
fprint(Unquoted, fid, "abcäöü"):
fclose(fid):
ftextinput(file)

Параметры

filename

Имя файла: символьная строка или флаг TempFile

Опции

TempFile

fopen создает временный файл в системной папке “временного файла”. Имя этого файла может быть запрошено с помощью fname.

Append, Read, Write

С Read файл открыт для чтения; с Write или Append, это открыто для записи. Если файл, открытый для записи, еще не существует, это создается. С Write перезаписываются существующие файлы. С Append новые данные могут быть добавлены к существующему файлу. Обратите внимание на то, что в режиме Append, заданный формат должен совпасть с форматом существующего файла; в противном случае файл не может быть открыт, и fopen возвращает FAIL. Если флаг TempFile дан, режимом по умолчанию является Write. В противном случае режимом по умолчанию является Read.

Bin, Raw, Text

С Bin данные хранятся в MuPAD внутренний двоичный формат. С Text данные могут быть строками или объектами MuPAD, хранившими как текст. Новые строки обработаны согласно соглашениям операционной системы под рукой. С Raw данные интерпретированы как бинарные числа машины. Смотрите функции readbytes и writebytes.

Если режимом является Read или Append, значением по умолчанию является формат данных в существующем файле. Если режимом является Write, значением по умолчанию является Bin.

Encoding

Эта опция позволяет вам задать кодировку символов, чтобы использовать. Позволенная кодировка:

"Big5"

"ISO-8859-1"

"windows-932"

"EUC-JP"

"ISO-8859-2"

"windows-936"

"GBK"

"ISO-8859-3"

"windows-949"

"KSC_5601"

"ISO-8859-4"

"windows-950"

"Macintosh"

"ISO-8859-9"

"windows-1250"

"Shift_JIS"

"ISO-8859-13"

"windows-1251"

"US-ASCII"

"ISO-8859-15"

"windows-1252"

"UTF-8"

 

"windows-1253"

  

"windows-1254"

  

"windows-1257"

Кодировка по умолчанию системно-зависима. Если вы задаете кодирование неправильно, символы могут читать неправильно. Символы, нераспознанные кодированием, заменяются символом замены по умолчанию для заданного кодирования.

Кодировка, не перечисленная здесь, может быть задана, но не может привести к правильным результатам.

Возвращаемые значения

положительное целое число: дескриптор файла. FAIL возвращен, если файл не может быть открыт.

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

Функции MuPAD