Esclusione del meccanismo di serializzazione
Come si è visto, il framework offre un modo predefinito per leggere e scrivere dati da e verso i file. La serializzazione tramite un oggetto archivio soddisfa le esigenze di molte applicazioni. Un'applicazione di questo tipo legge un file interamente in memoria, consente all'utente di aggiornare il file e quindi scrive nuovamente la versione aggiornata su disco.
Tuttavia, alcune applicazioni operano sui dati in modo molto diverso e per queste applicazioni la serializzazione tramite un archivio non è adatta. Esempi includono programmi di database, programmi che modificano solo parti di file di grandi dimensioni, programmi che scrivono file di solo testo e programmi che condividono file di dati.
In questi casi, è possibile eseguire l'override della funzione Serialize in modo diverso per mediare le azioni dei file tramite un oggetto CFile anziché un oggetto CArchive.
È possibile usare le Open
funzioni membro , Read
Write
, Close
, , e Seek
della classe CFile
per aprire un file, spostare il puntatore di file (seek) a un punto specifico nel file, leggere un record (un numero specificato di byte) a quel punto, consentire all'utente di aggiornare il record, quindi cercare di nuovo lo stesso punto e scrivere nuovamente il record nel file. Il framework aprirà il file per l'utente e sarà possibile usare la GetFile
funzione membro della classe CArchive
per ottenere un puntatore all'oggetto CFile
. Per un uso ancora più sofisticato e flessibile, è possibile eseguire l'override delle funzioni membro OnOpenDocument e OnSaveDocument della classe CWinApp
. Per altre informazioni, vedere classe CFile nella Guida di riferimento per MFC.
In questo scenario, l'override Serialize
non esegue alcuna operazione, a meno che, ad esempio, non si voglia leggere e scrivere un'intestazione di file per mantenerla aggiornata alla chiusura del documento.