Partilhar via


Fazendo bypass do mecanismo de serialização

Como você viu, a estrutura fornece uma maneira padrão de ler e gravar dados de e para arquivos. A serialização por meio de um objeto de arquivo atende às necessidades de muitos aplicativos. Um aplicativo como esses lê um arquivo inteiramente na memória, permite que o usuário atualize o arquivo e, em seguida, grava a versão atualizada no disco novamente.

No entanto, alguns aplicativos operam em dados de forma muito diferente; para esses aplicativos, a serialização por meio de um arquivo não é adequada. Exemplos incluem programas de banco de dados, programas que editam apenas partes de arquivos grandes, programas que gravam arquivos somente texto e programas que compartilham arquivos de dados.

Nesses casos, você pode substituir a função Serialize de uma maneira diferente para mediar ações de arquivo por meio de um objeto CFile em vez de um objeto CArchive.

Você pode usar as funções membro Open, Read, Write, Close e Seek da classe CFile para abrir um arquivo, mover o ponteiro do arquivo (buscar) para um ponto específico no arquivo, ler um registro (um número especificado de bytes) nesse ponto, permitir que o usuário atualize o registro e, em seguida, buscar o mesmo ponto novamente e gravar o registro de volta no arquivo. A estrutura abrirá o arquivo para você, que poderá usar a função membro GetFile da classe CArchive para obter um ponteiro para o objeto CFile. Para uso ainda mais sofisticado e flexível, você pode substituir as funções de membro OnOpenDocument e OnSaveDocument da classe CWinApp. Para obter mais informações, consulte a classe CFile na Referência do MFC.

Nesse cenário, sua substituição Serialize não produz nada, a menos que, por exemplo, você queira que ele leia e escreva um cabeçalho de arquivo para mantê-lo atualizado quando o documento for fechado.

Confira também

Usando documentos