Obcházení mechanismu serializace
Jak jste viděli, architektura poskytuje výchozí způsob čtení a zápisu dat do a ze souborů. Serializace prostřednictvím archivního objektu vyhovuje potřebám velkého množství aplikací. Taková aplikace načte soubor zcela do paměti, umožní uživateli aktualizovat soubor a pak znovu zapíše aktualizovanou verzi na disk.
Některé aplikace však pracují s daty velmi odlišně a pro tyto aplikace serializace prostřednictvím archivu není vhodné. Mezi příklady patří databázové programy, programy, které upravují jenom části velkých souborů, programy, které zapisuje pouze textové soubory, a programy, které sdílejí datové soubory.
V těchto případech můžete funkci Serializace přepsat jiným způsobem, jak mediatizovat akce souboru prostřednictvím objektu CFile místo CArchive objektu.
K otevření souboru můžete použít Open
funkce , , Read
, Write
Close
a Seek
členské funkce třídyCFile
, přesunout ukazatel souboru (hledat) do konkrétního bodu v souboru, přečíst záznam (zadaný počet bajtů) v tomto okamžiku, nechat uživatele aktualizovat záznam, pak znovu vyhledat stejný bod a zapsat záznam zpět do souboru. Architektura otevře soubor za vás a můžete použít GetFile
členovou funkci třídy CArchive
k získání ukazatele na CFile
objekt. Pro ještě sofistikovanější a flexibilnější použití můžete přepsat OnOpenDocument a OnSaveDocument členské funkce třídy CWinApp
. Další informace naleznete v CFile třídy v mfc reference.
V tomto scénáři přepsání Serialize
nic nedělá, pokud ho například nechcete číst a zapisovat hlavičku souboru, aby byla při zavření dokumentu aktuální.