Partager via


CArchive::CArchive

Construit un objet d' CArchive et spécifie s'il sera utilisé pour charger et stocker des objets.

CArchive( 
   CFile* pFile, 
   UINT nMode, 
   int nBufSize = 4096, 
   void* lpBuf = NULL  
);

Paramètres

  • pFile
    Pointeur vers l'objet d' CFile qui est la source ou la destination finale de données persistantes.

  • nMode
    Un indicateur qui spécifie de si les objets sont chargés ou stockés à l'archivage. Le paramètre d' nMode doit avoir l'une des valeurs suivantes :

    • Données de chargement deCArchive::load de l'archive. Requiert uniquement des autorisations de lecture d' CFile .

    • CArchive::store enregistre les données à l'archivage. Requiert l'autorisation d'écriture d' CFile .

    • CArchive::bNoFlushOnDelete empêché l'archive d'appel automatique Flush lorsque le destructeur d'archivage est appelé. Si vous définissez cette balise, vous êtes chargé d'appeler explicitement Fermer avant que le destructeur est appelé. Si vous ne le faites pas, les données sont endommagées.

  • nBufSize
    Un entier qui spécifie la taille de la mémoire tampon de fichier interne, en octets. Notez que la taille de mémoire tampon par défaut est de 4.096 octets. Si vous archivez régulièrement des grands objets, vous améliorerez les performances si vous utilisez une plus grande taille de mémoire tampon qui est un multiple de la taille de la mémoire tampon de fichier.

  • lpBuf
    Un pointeur facultatif dans une mémoire tampon fournie par l'utilisateur de taille nBufSize. Si vous ne spécifiez pas ce paramètre, l'archive alloue une mémoire tampon du tas local et la libère lorsque l'objet est détruit. L'archive ne libère pas une mémoire tampon fournie par l'utilisateur.

Notes

Vous ne pouvez pas modifier cette spécification après avoir créé l'archive.

Vous ne pouvez pas utiliser des opérations d' CFile pour modifier l'état du fichier jusqu'à la fermeture de l'archive. Une telle opération endommagera l'état de l'archivage. Vous pouvez accéder à la position du pointeur de fichier à tout moment pendant la sérialisation en obtenant le fichier objet de l'archive de la fonction membre de GetFile puis à l'aide de la fonction de CFile::GetPosition . Vous devez appeler CArchive::Flush avant d'obtenir la position du pointeur de fichier.

Exemple

CFile file;
TCHAR szBuf[512];
if( !file.Open(_T("CArchive__test__file.txt"), 
   CFile::modeCreate | CFile::modeWrite)) 
{
   #ifdef _DEBUG
     AFXDUMP(_T("Unable to open file\n"));
     exit(1);
   #endif
}
CArchive ar(&file, CArchive::store, 512, szBuf);

Configuration requise

Header: afx.h

Voir aussi

Référence

CArchive, classe

Graphique de la hiérarchie

CArchive::Close

CArchive::Flush

CFile::Close