- •Тема 11. Модульное программирование: файлы и потоки
- •Описание и внутреннее представление файлов
- •Текстовые и бинарные файлы
- •Базовые операции над файлами
- •Позиционирование в файле
- •Библиотечные функции работы с файлами
- •Понятие потока
- •Назначение классов потокового ввода-вывода
- •Функция pthread_join
- •Функция pthread_exit
- •Список использованной литературы:
- •Список контрольных вопросов
Текстовые и бинарные файлы
Файлы позволяют пользователю считывать большие объемы данных непосредственно с диска, не вводя их с клавиатуры. Существуют два основных типа файлов: текстовые и двоичные.
Текстовыми называются файлы, состоящие из любых символов. Они организуются по строкам, каждая из которых заканчивается символом «конца строки». Конец самого файла обозначается символом «конца файла». При записи информации в текстовый файл, просмотреть который можно с помощью любого текстового редактора, все данные преобразуются к символьному типу и хранятся в символьном виде.
В двоичных файлах информация считывается и записывается в виде блоков определенного размера, в которых могут храниться данные любого вида и структуры.
Для работы с файлами используются специальные типы данных, называемые потоками. Поток ifstream служит для работы с файлами в режиме чтения, а ifstream в режиме записи. Для работы с файлами в режимах, как записи, так и чтения служит поток ifstream.
В программах на C++ при работе с текстовыми файлами необходимо подключать библиотеки ifstream и iostream.
Для того чтобы записывать данные в текстовый файл, необходимо: 1)описать переменную типа ofstream; 2)открыть файл с помощью функции open; 3)вывести информацию в файл; 4)обязательно закрыть файл.
Для считывания данных из текстового файла, необходимо:
1)описать переменную типа ifstream; 2)открыть файл с помощью функции open; 3)считать информацию из файла, при считывании каждой порции данных необходимо проверять, достигнут ли конец файла; 4)закрыть файл.
Следует отметить, что во всех рассмотренных выше примерах функция fopen() в режимах “r” и “w” открывает текстовый файл на чтение и запись соответственно. Это означает, что некоторые символы форматирования текста, например возврат каретки ‘\r’ не могут быть считаны как отдельные символы, их как бы ни существует в файле, но при этом они там есть. Это особенность текстового режима файла. Для более «тонкой» работы с содержимым файлов существует бинарный режим, который представляет содержимое файла как последовательность байтов, где все возможные управляющие коды являются просто числами. Именно в этом режиме возможно удаление или добавление управляющих символов недоступных в текстовом режиме. Для того чтобы открыть файл в бинарном режиме используется также функция fopen() с последним параметром равным “rb” и “wb” соответственно для чтения и записи.
Функции для работы с файлами: FILE fopen (char *filename, char *mode) - Связывает указатель с файлом и открывает файл.
filename-указатель на имя файла.
mode – указатель на строку, содержащую режим.
Файловый указатель (file pointer) –это указатель на информацию о файле, включающую его имя, статус, текущее расположение
Указатель файла – это указатель на структуру типа FILE, которая определена в файле stdio.h
Существует два типа файлов:
1)текстовый (text)- последовательность символов, заканчивающаяся двумя символами: перевод строки и возврат каретки;
2)двоичный (binary)- последовательность байтов.
