exponenta event banner

fopen

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

Описание

пример

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 output - имя стандартной схемы кодирования. fopen не считывает информацию из файла для определения этих выходных значений. Инвалид fileID возвращает пустые символьные векторы для всех выходных аргументов.

Примеры

свернуть все

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

Откройте файл, tsunamis.txtи получить идентификатор файла.

fileID = fopen('tsunamis.txt');

Пройти fileID в fgetl для чтения одной строки из файла.

tline = fgetl(fileID)
tline =

  'A global tsunami data set in xlsx format, comprising the following file:'

Закройте файл.

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('tsunamis.txt');

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

fIDs = fopen('all')
fIDs =

     3

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

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

    'matlabroot\toolbox\matlab\demos\tsunamis.txt'


encoding =

    'windows-1252'

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

Входные аргументы

свернуть все

Имя открываемого файла, определяемое как вектор символов или строковый скаляр, включающий расширение файла.

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

В зависимости от расположения файла, filename может принять одну из этих форм.

Текущая папка или папка по пути MATLAB

Укажите имя файла в filename.

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

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

Пример: 'sample_file.txt'

Другие папки

Если файл находится не в текущей папке или в папке по пути MATLAB, укажите полный или относительный путь в filename.

Пример: 'C:\myFolder\myFile.sample_file.txt'

Пример: 'myFolder\sample_file.txt'

Удаленное расположение

Если файл хранится в удаленном местоположении, то filename должен содержать полный путь к файлу, указанному как унифицированный указатель ресурса (URL) формы:

scheme_name://path_to_file/my_file.ext

В зависимости от вашего удаленного местоположения, scheme_name может быть одним из значений в этой таблице.

Удаленное расположениеscheme_name
Амазонский S3™s3
Хранилище больших двоичных объектов Windows Azure ®wasb, wasbs
HDFS™hdfs

При использовании облачной файловой системы задайте переменные среды для взаимодействия с удаленной файловой системой. Дополнительные сведения см. в разделе Работа с удаленными данными.

Файлы тома распределенной файловой системы (HDFS) Hadoop нельзя открывать в режиме чтения-записи.

Пример: 's3://bucketname/path_to_file/sample_file.txt'

Пример: 'myFile.txt'

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

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

'r'

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

'w'

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

'a'

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

'r+'

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

'w+'

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

'a+'

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

'A'

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

'W'

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

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

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

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

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

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

Для чтения и записи в один и тот же файл:

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

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

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

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

'n' или 'native'

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

'b' или 'ieee-be'

Заказ Big-endian

'l' или 'ieee-le'

Заказ Little-endian

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

Порядок Big-endian, 64-разрядный тип данных

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

Упорядочивание Little-endian, 64-разрядный длинный тип данных

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

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

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

'Big5'

'ISO-8859-1'

'windows-874'

'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 использует автоматическое обнаружение набора символов для определения кодировки. Если при открытии файла для записи не указана схема кодирования, fopen по умолчанию используется UTF-8 для обеспечения совместимости между всеми платформами и языками без потери или повреждения данных. Дополнительные сведения см. в разделе Импорт текстовых файлов данных с низкоуровневым вводом/выводом.

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

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

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

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

Совет

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

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

.

См. также

| | | | | | | | |

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