Partilhar via


Serializando dados para e de arquivos

A ideia básica de persistência é que um objeto deve ser capaz de gravar seu estado atual, indicado pelos valores de suas variáveis de membro, no armazenamento persistente. Mais tarde, ele pode ser recriado lendo ou "desserializando" seu estado no armazenamento persistente. É importante ter em mente que o próprio objeto é responsável por ler e gravar o próprio estado. Portanto, para que uma classe seja persistente, ela deve implementar as operações básicas de serialização.

A estrutura fornece uma implementação padrão para salvar documentos em arquivos de disco em resposta aos comandos “Salvar” e “Salvar como” no menu Arquivo e para carregar documentos de arquivos de disco em resposta ao comando “Abrir”. Com pouquíssimo trabalho, é possível implementar a capacidade de um documento de gravar e ler os próprios dados de/em um arquivo. A principal ação necessária é substituir a função de membro Serializar na classe do documento.

O assistente de aplicativo do MFC coloca uma substituição esquelética da Serialize função do membro CDocument na classe de documento criada para você. Depois de implementar as variáveis de membro do aplicativo, é possível preencher sua substituição Serialize com o código que envia os dados para um "objeto de arquivo" conectado a um arquivo. Um objeto CArchive é semelhante aos objetos de entrada/saída cin e cout da biblioteca iostream de C++. No entanto, CArchive grava e lê o formato binário, não textos formatados.

O que mais você deseja saber?

A função do documento na serialização

A estrutura responde automaticamente aos comandos "Abrir", "Salvar" e "Salvar como" do menu Arquivo chamando a função de membro Serialize do documento, caso ela esteja implementada. Um comando ID_FILE_OPEN, por exemplo, chama uma função de manipulador no objeto do aplicativo. Durante esse processo, o usuário vê e responde à caixa de diálogo “Abrir” de Arquivo e a estrutura obtém o nome do arquivo escolhido pelo usuário. Em seguida, ela cria um objeto CArchive configurado para carregar dados no documento e transmite o arquivo para Serialize. A estrutura já abriu o arquivo. O código na função de membro Serialize do documento lê os dados por meio do arquivo, reconstruindo os objetos de dados conforme necessário. Para saber mais sobre a serialização, confira o artigo Serialização.

A função dos dados na serialização

Em geral, os dados de tipo de classe devem ser capazes de serializar a si mesmos. Isso significa que, quando você transmite um objeto para um arquivo, o objeto deve saber como gravar-se no arquivo e como ler-se a partir dele. O MFC dá suporte a esse tipo de transformação das classes em serializáveis. Ao criar uma classe para definir um tipo de dados, se você pretende serializar dados desse tipo, faça seu design levando a serialização em conta.

Confira também

Usando documentos