Работа с двоичными файлами с использованием класса TFileStream

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

В следующем примере в файл записывается 100 целых чисел

//Создаем поток и загружаем в него файл
TFileStream  * tfile=new TFileStream("a.000",fmOpenReadWrite);
//При открытии указатель и так на нуле
tfile>Seek(0,0);
//Определяем буфер для записи
int szBuf[100];
//Записываем информацию в буфер
for(int i=0;i < 100;i++) szBuf[i]=i;
//Переносим информацию в поток
tfile>Write(&szBuf,sizeof(int)*100);
//Освобождение поток и переносим его в память
tfile>Free();

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

//Создаем поток и загружаем в него файл
TFileStream  *tfile=new TFileStream("a.000",fmOpenReadWrite);
//Можно не применять - при открытии указатель и так на нуле
tfile>Seek(0,0);
//Буфер для информации
int *virgBuf;
//Выделяем память для буфера информации
virgBuf=(int *)malloc(tfile>Size);
//Читаем информацию в буфер
tfile>Read(virgBuf,tfile>Size);
//Выводим информацию, например в компонент TMemo
for(unsigned int i=0;i < (unsigned int)tfile>Size/sizeof(int);i++)
   Memo1>Lines>Add(CurrToStr((int)virgBuf[i]));
//Освобождаем память
free(virgBuf);
//Освобождают поток и переносим в память
tfile>Free();

Аналогично, объявив буфер как char *vchrgBuf;, можно работать с файлами, хранящими информацию символьного типа. Размер буфера и потока в этом случае также приводится к типу char.

В начало

На главную подраздела

Домой