Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаИПлб.doc
Скачиваний:
38
Добавлен:
08.05.2019
Размер:
6.96 Mб
Скачать

2. Открытие файла

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

ФайловыйИдентификатор=fopen(ИмяФайла, РежимДоступа)

Первый входной параметр – имя открываемого файла может быть задано текстовой константой или строковой переменной. Второй входной аргумент определяет режим доступа к файлу и может принимать следующие значения (символ t указывает на то, что файл текстовый):

'rt' – открываемый текстовый файл предназначен только для чтения;

'rt+' – открываемый текстовый файл предназначен для чтения и записи;

'wt' – создаваемый пустой файл предназначен для записи;

'wt+' – создаваемый пустой файл предназначен для чтения и записи;

'at' – открываемый текстовый файл предназначен для добавления данных в конец файла (если файл еще не существует, то он создается);

'at+' – открываемый текстовый файл предназначен для добавления данных в конец файла и чтения данных (если файл еще не существует, то он создается).

Второй входной аргумент обязательным не является. Если он отсутствует, то файл открывается для чтения как двоичный (не текстовый).

Выходным аргументом функции fopen является файловый идентификатор (номер), присвоенный файлу. Если файл найти не удалось, то идентификатор получает значение, равное –1.

Пример: существующий в рабочем каталоге файл data.txt открывается для чтения

f1=fopen('data.txt','rt')

f1 =

3

Если не указать расширение txt, то файл data.txt не будет найден

f=fopen('data','rt')

f =

-1

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

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

[f,message]=fopen('data','rt')

f =

-1

message =

No such file or directory

Этим сообщением Matlab извещает, что нет такого файла или каталога. В случае успешного открытия файла переменная message не будет содержать никакого текста, будет пустой (размером 0×0).

Пример: имя файла, открываемого для записи, задается с клавиатуры по запросу программы

file_name=input('Укажите имя файла для записи: ','s');

[f2,message]=fopen(file_name,'wt')

В результате работы этого фрагмента получим

Укажите имя файла для записи: rezult.txt

f2 =

4

message =

''

в рабочей папке будет создан пустой файл rezult.txt размером 0 байтов.

Примечание: обратите внимание, какие номера дает Matlab открываемым файлам пользователя: 3 и 4. Номера 0, 1 и 2 закреплены соответственно за тремя системными файлами: stdin – стандартный ввод (ввод с клавиатуры), stdout – стандартный вывод (вывод в командное окно) и stderr – для вывода сообщений об ошибках. Эти файлы открывать не надо, они автоматически всегда доступны.

Зная номер открытого файла, пользователь может получить информацию о статусе этого файла. Для этого к функции fopen следует обратиться с числовым входным аргументом – номером файла. Например, выполнив фрагмент программы

[name,acces]=fopen(0)

[name,acces]=fopen(1)

[name,acces]=fopen(2)

[name,acces]=fopen(f1)

[name,acces]=fopen(4)

с учетом открытых нами ранее файлов data.txt и rezult.txt получим

name0 =

"stdin"

acces0 =

r

name1 =

"stdout"

acces1 =

a

name2 =

"stderr"

acces2 =

a

name3 =

data.txt

acces3 =

rt

name4 =

rezult.txt

acces4 =

wt

Функция fopen допускает еще один формат вызова

v=fopen('all')

В этом случае она возвращает вектор с номерами всех файлов, открытых к данному моменту работы программы (файлы с номерами 0, 1 и 2 в этот список не включаются).

v =

3 4