СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Лекционный материал "Работа с файлами"

Категория: Прочее

Нажмите, чтобы узнать подробности

Лекционный материал предназначен для использования в образовательном процессе преподавателями профессионального цикла по освоению темы «Работа с файлами» на дисциплине "Основы алгоритмизации и программирования" для специальности» 09.02.07 Информационные системы и программирование.

Просмотр содержимого документа
«Лекционный материал "Работа с файлами"»

Лекция 15. Основы файлового ввода-вывода



До сих пор мы писали программы, в которых ввод информации осуществлялся с клавиатуры в оперативную память компьютера, а вывод информации на монитор.

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

Файлы позволяют хранить данные постоянно, когда программа получает информацию из файла, то говорят, что она читает информацию из файла, а при выводе информации в файл, говорят, что записывает информацию в файл.

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

Для того, чтобы прочитать информацию из файла или записать её в файл, необходимы специальные переменные, которые называются потоками. Они имеют специальный тип и находятся в библиотеке fstream. Для чтения из файла используются переменные (поток) – ifstream.

А для записи в файл используются переменные (поток) типа ofstream.

Чтобы в программе можно было использовать потоковую переменную её необходимо связать с соответствующим файлом на диске с помощью функции open.

В общем виде обращение к этой функции записывается так:

имя_потока.open(“полный путь”);

Если переменная потока «чтение из файла» связана с соответствующим файлом на диске, то читать информацию из файла можно используя операцию извлечения.

В общем виде:

имя_потокаt;

где t – имя переменной.

Пусть на диске D: в папке beta находится файл с именем delta.cpp и в этом файле находится массив чисел, который необходимо прочитать в программу.

Пусть числа вещественные.

//объявляем переменную потока чтения из файла

ifstream f;

//связываем переменную с файлом на диске

f.open(“D:\\beta\\delta.cpp”);

//объявляем переменную, с помощью которой будет читаться информация из файла

double next;

//читаем одно значение из файла

fnext;

Выводить информацию в файл можно используя операцию «вставки».

имя_потокаt;

где t – переменная, значение которой записывается в файл.

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

Таким образом, имя потока является 2-м именем файла.

Закрытие файла

После считывания/записи информации в файл его нужно закрыть. Закрывая файл мы прекращаем его связь с потоком.

Файл закрывается обращением к методу (функции) close().

В общем виде:

имя_потока.close();

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

По двум причинам:

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

Если работа программы прервана из-за ошибки, то файл может оказаться в искаженном состоянии.

  1. В процессе решения задачи может потребоваться записать информацию в файл, а затем снова прочитать её в программе.

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

Полиморфизм

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


Проверка успешности открытия файла

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

Проверить успешность открытия файла можно с помощью функции fail().

имя_потока.fail();

Вызов функции fail() – это логическое выражение, которое можно использовать в качестве условия с операторами while и if.

Если обращение к методу open выполнено неудачно, то функция fail() возвращает значение .

Функция exit()

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

exit(целое значение)

По соглашению в качестве фактического параметра функции используется 1 (exit(1)), если обращение к функции exit выполняется при обнаружении ошибки в программе.

В остальных случаях в качестве фактического параметра берут 0.

Функция находится в библиотеке cstdlib.

Пример.

Когда идет работа с файлами имена папок и файлов должны быть написаны английскими буквами.

Пусть на диске D: в папке delta находится файл с именем sigma.cpp. в этом файле находится 5 вещественных чисел:

{-0.5 0.25 2.5 1.75 18.6}

Необходимо прочитать числа из файла и вывести их на монитор и вычислить сумму этих чисел (вывести её на монитор).

Файл с исходными данными необходимо создавать либо в приложении Блокнот, либо в Visual Studio, выбрав команду File-New-File.

Имена потоков (файлов) в качестве входной информации.

Задание. Набрать код программы в Visual Studio, скомпилировать, проверить правильность работы программы.

В онлайн компиляторе проверить работу программы не получится, потому что в коде указывается адрес файла НА ВАШЕМ КОМПЬЮТЕРЕ. Учитывайте этот момент при проверке работы программы.