Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО_экзамен.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
500.22 Кб
Скачать

2. Текстовые файлы. Двоичный файлы

Текстовые файлы

Файл – это логическое представление, принимаемое ко всему, начиная от дисковых файлов и оканчивая терминалами. В языке C++ файл связывается с потоком. Текстовый файл – это последовательность символов, информация в которой хранится в кодах ASCII. В таких файлах символы могут преобразовываться согласно требованиям среды. Потому может не наблюдаться соответствия между записываемыми или считываемыми символами и символами в файле и их количеством. Функция open открывает файл по умолчанию

ofstream mitya;

mitya.open("example.txt);

Двоичные файлы

Двоичный (неформатированный) файл – это последовательность байт, имеющих однозначное соответствие с записываемыми байтами, т.е. не происходит преобразование символов. В этом случае число записываемых байт и считываемых байт совпадает, но может произойти добавление некоторых нулевых байтов, которые служат для унификации представления информации. Для открытия файла в двоичном режиме в качестве параметра функции open надо передать ios::binary.

binout.open("binexample.txt",ios::binary|ios::trunc);

2. Создание файла и создание связи с файлом

В С++ работа с файлом производится путём связывания его с потоком. Для выполнения данной операции используется заголовочный файл fstream.h. Существует три разновидности потоков: ввода, вывода, ввода-вывода. Каждый из них характеризуется следующими классами: ofstream - вывод; ifstream - ввод, fstream - ввод-вывод. Изначально требуется создать объект одного из названных классов с помощью конструктора. Файл же создаётся автоматически, если не указан метод открытия ios::nocreate при использовании конструктора или метода open. Также можно использовать API функцию

CreateFile (LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDistribution,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile).

3. Удаление файла и связи с файлом

Удаление файла происходит с помощью функции remove(cons char *filename);

Удаление связи с файлом происходит с помощью функции fclose(FILE *stream);

Для удаления файла с физического носителя можно воспользоваться функцией

BOOL DeleteFile(

LPCTSTR lpFileName // file name

);

Функция CreateFile возвращает переменную типа HANDLE. При за-вершении работы с файлом его необходимо закрыть, используя функцию CloseHandle с описателем файла в качестве параметра.

Кроме того эта функция также работает с Access token, Com-munications device, Console input, Console screen buffer, Event, File, File mapping, Job, Mailslot, Mutex, Named pipe, Process, Semaphore, Socket, Thread.

4. Модификация файлов

Модификация файла.

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

fopen( file_name, "a" ), где file_name – это имя файла, в конец которого дописывается информация, а "a"- режим, который говорит о том что будет присоединена какая-то информация.

Пример из программы:

file = fopen( file_name, "a" );//добавление в конец текстового файла

while ((ch=getchar())!='.')

{

fprintf(file,"%c",ch);

}

fclose( file );

Для перемещения указателя внутри файла нужно использовать функцию

int fseek(FILE *stream, long offset, int origin);