Полезно за вас: Речник | Игри | Новини | Фирми | Рецепти | Обяви
Начало на реферати

Вход изход и сериализация. Работа с файлови обекти без сериализация


Информационни технологии | 2009-12-04 | 60 сваляния

24 Вход/изход и сериализация. Работа с файлови обекти без сериализация. MFC класове за целта. Цел и предимства за въвеждане на архивни обекти. Предефиниране на операциите за сериализация.


Работа без сериализация базов клас CFile

CFile myfile;

CFileException e;

if ( file.Open( _T(My.txt), CFile::modeReadWrite, &e)){

// работим с файла

}

else{

e.ReportError();

}

същото може и така:

try{

CFile file ( _T(MyFile.txt), CFile::modeReadWrite);..

}

catch( CFileException& e){

eReportError(); eDelete();

}

  • затваряне:

  1. file.Close();

  2. CFile обект се затваря авт. при излизане извън обсег.

  • четене/ запис

BYTE buff[0x4000]; CFile file();

DWORD length = file.GetLenght();

while(length) {

UINT nByteRead = file.Read(buff, sizeof(buff));

lenght -= nByteRead;

}

- file.Write(buff, nByteRead); // записва определен брой байтове от буфера

- file.Seek( относит. отместване в байтове, спрямо какво)

- препоръчително е четенето да се обхване oт try catch

  • изтриване (Remove())

  • преименоване на файлове (Rename())

Производни на CFile класове


CMemFile, CSharedFile

COleDataObject::GetFileData

CSocketFile, стои между архивния обект и CSocket обекта.

CStdioFile , наследник на CFile. Пример:

пример:

try {

CStdioFile file( _T(My.txt), CFile::modeRead); ..

}

catch( CfFileException* e) { }

CInternetFile, CGopherFile и CHttpFile .

Изброяване на файлове и директории

::FindFirstFile

:: FindNextFile()

:: FindClose()

Универсален подход на I/O използване на архиви (базов клас CArchive)

Ето пример: искате в отоворен файл да запишете 2 променливи a,b:

file.Write( &a, sizeof(a));

file.Write( &b, sizeof (&b));

Ето другият подход:

CArchive ar( &file, CArchive::store);

ar << a << b;

Архива е един междинен обектмежду нас и запомнящата среда, скриващ спецификацията на запомнянето, а представящ на нас само стандартният диск. Едни и същи операции за вход/изход да бъдат използвани за данни с различен тип. Архива е винаги между нашето прилижение и запомнящата среда. Функцията на междинният слой е като един транслатор. Най-често архива се асоцира с диск. Първо създаваме архива обект, асоцираме го със запомнящата среда. Командите за вход/изход трябва да се предефинират за нашите данни и обекти. Всички примитивни типове имат предефинирани в MFC операции за << >> (BYTE, WORD, LONG, DWORD, float, double, intchar, char, unsigned int). Оперторите са предефинирани и за непримитивни типове, за които има стандартни MFC класове:

пример: Cstring string; ar<<string;

също и за: Ctime, Crect, Csize, ColeDateTime, cole variant , както и за структури SIZE, POINT, RECT.

Ако се създават собствени класове и ако искаме те да поддържат всички обекти от тези класове и ако направим класа наследник на Cobject тогава не е нужно да предефинираме командите за вход/изход.

Вход изход и сериализация. Работа с файлови обекти без сериализация

Добави своя коментар:



Тагове от реферата: , , , , ,

Изтегли в DOC | PDF | ZIP

Подобни материали


Тест по информатика за 9-ти клас + верните отговори Информационни технологии | 2010-11-16 | 212 прочитания
Хардуерен компонент видео карта Информационни технологии | 2010-11-16 | 44 прочитания
Приложение на информационните технологии 1 Информационни технологии | 2010-11-16 | 41 прочитания
НАЙ-ЧЕСТО ИЗПОЛЗВАНИТЕ КОМПЮТЪРНИ ТЕРМИНИ Информационни технологии | 2010-11-16 | 184 прочитания
Създаване на Web страници1 Информационни технологии | 2010-11-16 | 98 прочитания
Методология и технология за изграждане на Е-магазин Информационни технологии | 2010-11-16 | 65 прочитания
Интернет - новата масмедиа Информационни технологии | 2010-11-16 | 45 прочитания
Програмно и хардуерно осигуряване в CC++ Информационни технологии | 2010-11-16 | 53 прочитания
Системи за откриване на атаки Информационни технологии | 2010-11-16 | 60 прочитания
Мрежов модел данни Информационни технологии | 2010-11-16 | 30 прочитания