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



В С++ работа с файлом производится путём связывания его с потоком. Для выполнения данной операции используется заголовочный файл 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).

 

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

Удаление файла происходит с помощью функции 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.

 

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

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

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

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);

 

Операции с файлами

Для открытия файла используется функция fopen(), которая имеет следующий прототип:

FILE * fopen( const char *имя_ файла, const char *режим ).

Режим указывает на строку, содержащую желаемый режим открытия файла. Файл может быть открыт как для записи, так и для чтения. Для записи используется режим w, для чтения – режим r.

Для закрытия файла используется функция fclose(), которая имеет прототип:

Int fclose(FILE *fp)

Fp- это указатель на файл, возвращенный fopen().

file = fopen( file_name, "w" );//по умолчанию текстовый файл

 while ((ch=getchar())!='.') { fprintf(file,"%c",ch); }fclose( file );

Запись в файл.

Для записи в файл используется функция fprintf(). Она имеет следующий прототип:

Int fprintf(FILE *fp, const char *форматная строка,…)

Fp- это указатель на файл, возвращенный fopen(), форматная строка определяет способ вывода последующих аргументов, содержит два типа элементов: спецификаторы формата и символы, записываемые в файл.

Так же есть функция putc(), которая читает символы с клавиатуры и записывает их в файл, пока не встретится точка. Имя файла указывается в командной строке.

Чтение из файла.

Функция getc() и fgetc() используются для чтения символов из открытого для чтения файла: Int fgetc(FILE *fp)

Эта функция возвращает EOF при достижении конца файла.

Так же для чтения можно использовать функцию fscanf(FILE *fp, const char *форматная строка,… ). Эта функция аналогична предыдущей.

file = fopen(cFilename, "rb"); //чтение двоичного файла

while(!feof(file)){ cCh = fgetc(file);if (cCh=='\n') iCount++;printf("%c",cCh);} fclose(file);

 

Организация данных на внешних носителях. Внешняя память на дисках

При использовании дисковых накопителей возникает проблема: как ОС определить в каком кластере размещается файл и етк.

 


Дата добавления: 2019-02-13; просмотров: 248; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!