fopen

Открытый файл, или получают информацию об открытых файлах

Синтаксис

fileID = fopen(filename)
fileID = fopen(filename,permission)
fileID = fopen(filename,permission,machinefmt,encodingIn)
[fileID,errmsg] = fopen(___)
fIDs = fopen('all')
filename = fopen(fileID)
[filename,permission,machinefmt,encodingOut] = fopen(fileID)

Описание

пример

fileID = fopen(filename) открывает файл, filename, для бинарного доступа для чтения, и возвращает целочисленный идентификатор файла, равный или больше, чем 3. MATLAB® резервирует идентификаторы файла 0, 1 и 2 для стандартного входного параметра, стандартный вывод (экран), и стандартная погрешность, соответственно.

Если fopen не может открыть файл, то fileID является -1.

fileID = fopen(filename,permission) открывает файл с типом доступа, заданного permission.

пример

fileID = fopen(filename,permission,machinefmt,encodingIn) дополнительно задает порядок для чтения или записи байтов или битов в файле с помощью аргумента machinefmt. Дополнительный аргумент encodingIn задает схему кодировки символов, сопоставленную с файлом.

пример

[fileID,errmsg] = fopen(___) дополнительно возвращает системно-зависимое сообщение об ошибке, если fopen не удается открыть файл. В противном случае errmsg является пустым символьным вектором. Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.

пример

fIDs = fopen('all') возвращает вектор - строку, содержащий идентификаторы файла всех открытых файлов. Идентификаторы, зарезервированные для стандартного входного параметра, вывода и ошибки, не включены. Число элементов в векторе равно количеству открытых файлов.

filename = fopen(fileID) возвращает имя файла, которое использовал предыдущий вызов fopen, когда это открыло файл, заданный fileID. Выходное имя файла разрешено к полному пути. Функция fopen не считывает информации из файла, чтобы определить выходное значение.

пример

[filename,permission,machinefmt,encodingOut] = fopen(fileID) дополнительно возвращает разрешение, формат машины и кодирование, которое использовал предыдущий вызов fopen, когда это открыло заданный файл. Если файл был открыт в режиме двоичного счета, permission включает букву 'b'. encodingOut вывод является стандартным именем схемы кодирования. fopen не считывает информации из файла, чтобы определить эти выходные значения. Недопустимый fileID возвращает пустые символьные вектора для всех выходных аргументов.

Примеры

свернуть все

Откройте файл и передайте идентификатор файла функции fgetl, чтобы считать данные.

Откройте файл, airfoil.m, и получите идентификатор файла.

fileID = fopen('airfoil.m');

Передайте fileID функции fgetl, чтобы считать одну строку из файла. Затем закройте файл.

tline = fgetl(fileID);
fclose(fileID)

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

fileID = -1;
errmsg = '';
while fileID < 0 
   disp(errmsg);
   filename = input('Open file: ', 's');
   [fileID,errmsg] = fopen(filename);
end

Откройте файл, чтобы записать в файл с помощью кодировки символов Shift JIS.

fileID = fopen('japanese_out.txt','w','n','Shift_JIS');

Входной параметр 'w' задает доступ для записи, входной параметр 'n' задает нативный порядок байтов, и 'Shift_JIS' задает схему кодировки символов.

Предположим, что вы ранее открыли файл с помощью fopen.

fileID = fopen('airfoil.m');

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

fIDs = fopen('all')
fIDs =

     3

Получите имя файла и кодировку символов для открытого файла. Используйте ~ вместо выходных аргументов, которые вы хотите не использовать.

[filename,~,~,encoding] = fopen(3)
filename =

matlabroot\toolbox\matlab\demos\airfoil.m


encoding =

windows-1252

Вывод, показанный здесь, является представительным. Ваши результаты могут отличаться.

Входные параметры

свернуть все

Имя файла, чтобы открыться, включая расширение файла, заданное как символьный вектор - строка или скаляр строки. Если файл не находится в текущей папке, filename должен включать полное или относительный путь.

В системах UNIX®, если filename начинается с '~/' или '~username/', функция fopen расширяет путь к корневому каталогу текущего или заданного пользователя, соответственно.

  • Если вы открываете файл с доступом для чтения, и файл не находится в текущей папке, то fopen ищет вдоль пути поиска файлов MATLAB.

  • Если вы открываете файл с записью или добавляете доступ, и файл не находится в текущей папке, то fopen создает файл в текущем каталоге.

Пример: 'myFile. txt

Типы данных: char | string

Тип доступа к файлу, заданный как вектор символа или скаляр строки. Можно открыть файл в режиме двоичного счета или в текстовом режиме. В системах UNIX оба режима перевода имеют тот же эффект. Чтобы открыть файл в режиме двоичного счета, задайте одно из следующих.

R

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

W

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

A

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

'r+'

Открытый файл для чтения и записи.

'w+'

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

'a+'

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

A

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

W

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

Чтобы открыть файлы в текстовом режиме, присоедините букву 't' к аргументу permission, такому как 'rt' или 'wt+'.

В системах Windows®, в текстовом режиме:

  • Операции чтения, которые сталкиваются с возвратом каретки, сопровождаемым символом новой строки ('\r\n'), удаляют возврат каретки из входного параметра.

  • Операции записи вставляют возврат каретки перед любым символом новой строки в выводе.

Откройте или создайте новый файл в текстовом режиме, если вы хотите записать в него в MATLAB и затем открыть его в Блокноте Microsoft® или каком-либо текстовом редакторе, который не распознает '\n' как последовательность новой строки. При записи в файл закончите каждую строку '\r\n'. Для примера смотрите fprintf. В противном случае откройте файлы в режиме двоичного счета для лучшей производительности.

Читать и записать в тот же файл:

  • Откройте файл со значением для permission, который включает знак "плюс", '+'.

  • Вызовите fseek или frewind между операциями чтения и операциями записи. Например, не вызывайте fread, сопровождаемый fwrite или fwrite, сопровождаемым fread, если вы не вызываете fseek или frewind между ними.

Типы данных: char | string

Порядок для чтения или записи байтов или битов в файле, заданном как одни из следующих векторов символов или скаляров строки.

'n' или 'native'

Ваш системный порядок байтов (значение по умолчанию)

'b' или 'ieee-be'

Упорядоченное расположение с обратным порядком байтов

'l' или 'ieee-le'

Упорядоченное расположение с прямым порядком байтов

's' или 'ieee-be.l64'

Упорядоченное расположение обратного порядка байтов, 64-битный долгий тип данных

'a' или 'ieee-le.l64'

Упорядоченное расположение прямого порядка байтов, 64-битный долгий тип данных

По умолчанию все в настоящее время поддерживаемые платформы используют упорядоченное расположение прямого порядка байтов для новых файлов. Существующие двоичные файлы могут использовать или упорядоченное расположение с прямым порядком байтов или с обратным порядком байтов.

Типы данных: char | string

Кодировка символов, чтобы использовать для последующих операций чтения и операций записи, включая fscanf, fprintf, fgetl, fgets, fread и fwrite, заданный как вектор символа или скаляр строки. Вектор символа или скаляр строки должны содержать имя схемы кодирования стандартного символа, такое как следующее.

'Big5'

'ISO-8859-1'

'windows-847'

'Big5-HKSCS'

'ISO-8859-2'

'windows-949'

'CP949'

'ISO-8859-3'

'windows-1250'

'EUC-KR'

'ISO-8859-4'

'windows-1251'

'EUC-JP'

'ISO-8859-5'

'windows-1252'

'EUC-TW'

'ISO-8859-6'

'windows-1253'

'GB18030'

'ISO-8859-7'

'windows-1254'

'GB2312'

'ISO-8859-8'

'windows-1255'

'GBK'

'ISO-8859-9'

'windows-1256'

'IBM866'

'ISO-8859-11'

'windows-1257'

'KOI8-R'

'ISO-8859-13'

'windows-1258'

'KOI8-U'

'ISO-8859-15'

'US-ASCII'

 

'Macintosh'

'UTF-8'

 

'Shift_JIS'

 

Если вы не задаете схему кодирования, fopen открывает файлы для обработки использования кодировки по умолчанию для вашей системы. Для получения дополнительной информации смотрите Вводные Файлы с Различными Кодировками символов.

Если вы задаете значение для кодирования, которое не находится в списке поддерживаемых значений, MATLAB выдает предупреждение. Определение других имен кодирования иногда (но не всегда) приводит к правильным результатам.

Типы данных: char | string

Идентификатор файла открытого файла, заданного как целое число.

Типы данных: double

Советы

  • В большинстве случаев не необходимо открыть файл в текстовом режиме. Функции импорта MATLAB, все приложения UNIX, и Microsoft Word и WordPad распознают '\n' как индикатор новой строки.

Расширенные возможности

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

| | | | | | | | |

Представлено до R2006a

Была ли эта тема полезной?