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

пример

[filename,permission,machinefmt,encodingOut] = fopen(fileID) кроме того, возвращает разрешение, формат машины и кодировку, которые были получены при предыдущем вызове fopen используется при открытии указанного файла. Если файл был открыт в двоичном режиме, permission включает букву 'b'. The encodingOut выводится имя стандартной схемы кодирования. 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');

The '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.

Если вы открываете файл с доступом read, а файл находится не в текущей папке, то 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

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

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

Пример: '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® Блокнот или любой текстовый редактор, который не распознает '\n' как последовательность новинок. При записи в файл завершайте каждую строку '\r\n'. Для получения примера см. fprintf. В противном случае откройте файлы в двоичном режиме для повышения эффективности.

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

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

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

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

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

'n' или 'native'

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

'b' или 'ieee-be'

Большой-эндовый упорядоченное расположение

'l' или 'ieee-le'

Little-endian упорядоченное расположение

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

Большой-эндовый упорядоченное расположение, 64-битный длинный тип данных

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

Little-endian ordering, 64-битный длинный тип данных

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

Типы данных: 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