A algum tempo atrás, quando comecei a desenvolver aplicações para Desktop tive a necessidade de armazenar configurações do servidor de banco de dados, foi então que eu descobri que era possível guardar o estado de um objeto em arquivo binário. Isso foi muito útil.
So, Let's Go Kids!
Para isso, vamos usar a API de
java.io
, uma classe de configuração simples, e o método que irá gravar nosso objeto.Abaixo segue a nossa classe de configuração.

Na classe acima, temos um modelo simplificado de uma configuração. Coloquei apenas atributos com tipo simples de dados, mas poderia ter usado qualquer tipo de dado, ou classe.
Agora a classe com o método que irá gerar nosso arquivo.

Acima, na linha 21, instancio o File onde será salvo o arquivo de configuração. O nome do arquivo e a extensão são irrelevantes pois independente disso, o conteúdo do arquivo é binário e não pode editado, caso isso seja feito o arquivo será corrompido e não será possível a recuperação. No entanto, é possível ler o valor dos atributos do tipo String, então, se for colocar a senha do banco no arquivo, use um array de char, pois assim, não será legível.
Nas linhas 23 e 24, criamos respectivamente um FileOutputStream e um ObjectOutputStream, que nos possibilitam gravar o objeto em arquivo. Na linha 26, gravamos efetivamente o estado do objeto no arquivo. Importante ressaltar que podemos gravar N objetos no mesmo arquivo. Após isso, descarregamos, e fechamos os Stream`s.
Mais abaixo na linha 36 instanciamos nosso objeto de configuração, e na linha 38 o método que grava o arquivo.
Lendo o arquivo e recuperando o objeto
Então pessoal, assim como precisamos salvar o estado do objeto, também precisamos lê-lo. Observem a figura abaixo.

Na linha 48 temos o método que fará a leitura do arquivo e resgatará nosso objeto. Nas linhas 51 e 52 temos respectivamente o FileInputStream e ObjectInputStream, e na linha 54 a leitura do arquivo e recuperação do objeto.
Voltando ao método
main
, fiz algumas modificações apenas ler o arquivo e imprimir a informação no console. Na linha 36, instancio o File
informando o arquivo onde salvei o objeto, depois na linha 38 é só chamar o método que irá recuperar o objeto.The Real Life!
Como eu já disse antes, você pode gerar um arquivo com um único objeto para salvar a configuração do banco de dados da aplicação. Além disso, outro uso interessante, é que você pode usar para armazenar tabelas que serão pré-carregadas na aplicação no ato da instalação do software, assim, não é necessário criar script`s de carga, e mandá-los com a instalação, o que deixaria exposto sua estrutura.
Grande abraço.
Referências:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileInputStream.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html
A serialização de objetos é muito interessante. As classes java.io.ObjectOutputStream e java.io.ObjectInputStream são consideradas de alto nível no pacote java.io, pois elas encapsulam objetos de mais baixo nível como java.io.FileOutupuStream e java.io.FileInputStream.
ResponderExcluirUma observação é quando se tem referências a outros objetos dentro da classe a ser serializada, a classe destes objetos devem implementar a classe java.io.Serializable, ou serem transientes,senão você receberá uma exceção em tempo de execução.
Cara muito legal seu tutorial ai...,
ResponderExcluirtenho uma dúvida eu posso usar esse mesmo raciocinio ai para gravar mais de um objeto no arquivo binário?