Лабораторная работа № 7 работа с файлами
Цель работы: Научиться пользоваться текстовыми файлами для сохранения результатов работы и чтения информации.
Основные теоретические положения
Файлы представляют собой именованные области внешней памяти, с которыми программы могут обмениваться информацией Иногда оперативной памяти недостаточен для хранения нужной информации и тогда приходится прибегать к услугам внешней памяти, записывая туда очередную порцию накопленных данных. В другой ситуации приложение может воспользоваться своими же данными, ранее записанными на диск или полученными в результате работы других программ.
Работа с файлами в основном ограничивается тремя-четырьмя операциями:
Выделение ресурсов и приведение файла в состояние готовности к обмену (именно это скрывается за термином открыть файл);
Чтение (ввод из файла) или запись (вывод в файл) очередной порции данных;
Возврат выделенных ресурсов и завершение неоконченных операций (этому соответствует термин закрыть файл).
К числу наиболее важных моментов, связанных с обменом информацией, следует отнести формат представления данных на внешнем носителе. В большинстве своем почти все системы программирования (и MATLAB в этом смысле — не исключение) используют два формата данных — текстовые и двоичные.
Текстовые или символьные данные состоят из строк, похожих на те, которые мы набираем при вводе с клавиатуры или видим при выводе на экране дисплея. Для текстовых данных характерна переменная длина строки, завершающейся невидимым признаком конца (обычно эту функцию выполняют символы типа CR- возврат каретки, LF- перевод строки).
Подготовка файла к работе
Файлы открывают с помощью функции fopen, которая в случае удачного завершения вщзвращает целочисленный положительный идентификатор файла f_id (называемый номером файла). В простейшем варианте вызова указывается единственный входной аргумент – имя открываемого файла
f_id=fopen(‘name_file’);
Для получения дополнительной информации, поясняющей причину ошибки при открытии файла, используется второй параметр
[f_id err_txt]=fopen(‘name_file’);
В случае ошибки в переменную err_txt будет занесено соответствующее сообщение. Если указанный файл обнаружен, тоон открывается для чтения как двоичный файл.
Второй входной аргумент функции fopen определяет режим доступа к определяемому файлу. Их значения:
Формат вызова |
Выполняемое действие
|
fopen (‘name_f ile', ' r') |
Открывается существующий двоичный файл для чтения |
fopen (‘name_f ile', ' rt') |
Открывается существующий текстовый файл для чтения |
fopen (‘name_f ile', ' r+') |
Открывается существующий двоичный файл, который можно использовать как для чтения, так и для записи (новый файл при этом не создается) |
fopen ('name_file', ' rt+') |
Открывается существующий текстовый файл, который можно использовать как для чтения, так и для записи (новый файл при этом не создается) |
fopen ('name_file', 'w') |
Открывается существующий или создается новый двоичный файл для записи. Предыдущее содержимое существующего файла пропадает |
fopen (‘name_file', ' wt') |
Открывается существующий или создается новый текстовый файл для записи. Предыдущее содержимое существующего файла пропадает |
fopen ('name_file', ' w+') |
Если существующий двоичный файл был ранее открыт, то его содержимое от текущей позиции указателя и до конца усекается. Если файл с таким именем не существовал, то создается новый файл. Открытый файл можно использовать для записи и чтения |
fopen ('name_file', 'wt+') |
Если существующий тектовый файл был ранее открыт, то его содержимое от текущей позиции указателя и до конца усекается. Если файл с таким именем не существовал, то создается новый файл. Открытый файл можно использовать для записи и чтения |
fopen ('name_file', ' а') |
Открывается существующий двоичный файл для дозаписи или создается новый файл |
fopen (' name_f ile', ' at') |
Открывается существующий текстовый файл для дозаписи или создается новый файл |
fopen ('name_file', 'а+') |
Открывается существующий двоичный файл для чтения и дозаписи. Если файла с указанным именем нет, то его создают |
fopen (' name_file', ' at+') |
Открывается существующий текстовый файл для чтения и дозаписи. Если файла с указанным именем нет, то его создают |