Вход изход и сериализация с поддръжка на MFC среда
| Информационни технологии | 2009-12-04 | 117 сваляния |
Вход/изход и сериализация с поддръжка на 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();}
-
затваряне:
-
file.Close();
-
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) { }
C
InternetFile, 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;
Тагове от реферата: myfile, поддръж, сериаия, CFileException, CFile, среда











