domingo, 13 de novembro de 2011

Exemplo para serializar vários objetos da mesma classe.

A serialização é um recurso excelente para solução de armazenar objetos em disco. A gravação destes objetos poderá ser feita conforme o exemplo (download).
Para se gravar vários tipos de objetos diferentes e recuperá-los para a memória, faço diferente, normalmente utilizo uma lista genérica. Crio um objeto List, adiciono todos os objetos que implementam a interface serializable, gravo a lista em disco e a recupero depois, com todo o seu conteúdo, ou seja, persisto os objetos que estão na memória para o disco e depois os recupero.

3 comentários:

Diego disse...

Rapaz normalmente não deixo comentários ao ler um blog, mas dessa vez vou abrir uma exceção. Faz dois dias completos que busco uma solução para um erro que vinha tendo, ele era ocasionado pelo fato de sempre que um objeto é serializado é criado junto do arquivo um cabeçalho e um rodapé com dados do objeto da serialização (se é objeto, versão e etc) obviamente isso tudo em hexadecimal. O problema é que na hora da leitura do segundo objeto sempre lançava um erro informando "invalid type code: AC" onde AC é exatamente o código hexadecimal que caracteriza o inicio de um cabeçalho e um instância de ObjectInputStream só aceita um tipo de cabeçalho. Achei essa solução em seu código. Cara muito obrigado!

Diego disse...

Rapaz normalmente não deixo comentários ao ler um blog, mas dessa vez vou abrir uma exceção. Faz dois dias completos que busco uma solução para um erro que vinha tendo, ele era ocasionado pelo fato de sempre que um objeto é serializado é criado junto do arquivo um cabeçalho e um rodapé com dados do objeto da serialização (se é objeto, versão e etc) obviamente isso tudo em hexadecimal. O problema é que na hora da leitura do segundo objeto sempre lançava um erro informando "invalid type code: AC" onde AC é exatamente o código hexadecimal que caracteriza o inicio de um cabeçalho e um instância de ObjectInputStream só aceita um tipo de cabeçalho. Achei essa solução em seu código. Cara muito obrigado!

Diego disse...

Agora só mais uma duvida, você sabe como identificar o fim do arquivo? Sempre que chega no fim do arquivo é gerado a exceção "EOFException".