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 выход является стандартным именем схемы кодирования. 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
Amazon 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'

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

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

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

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

Упорядоченное расположение прямого порядка байтов, 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