quinta-feira, 31 de março de 2011

Dicas de Programação: Gravando objetos em arquivos

Pergunta: Dá para guardar um objeto em um arquivo de uma aplicação e depois obte-lo em outra aplicação?
Resposta: Se a mesma classe existir nas duas aplicações dá sim! :)

Vamos a um exemplo:

1o.) Criamos um objeto de uma classe comum que será transferido da "aplicação 1" para a "aplicação 2":

import java.io.Serializable;

public class MinhaClasse implements Serializable {

private String nome;

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

}

2o.) Agora, vamos criar a "aplicação 1" que grava o objeto com o valor "Takemura":

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class App1 {

public static void main(String... args) throws Exception {
ObjectOutputStream output = null;
try{
MinhaClasse minhaClasse = new MinhaClasse();
minhaClasse.setNome("Takemura");
output = new ObjectOutputStream(new FileOutputStream("output.dat"));
output.writeObject(minhaClasse);
} finally {
output.close();
}
}
}

3o.) Agora criamos a "aplicação 2" que lê do arquivo, o objeto:

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class App2 {

public static void main(String... args) throws Exception {
ObjectInputStream input = null;
try{
input = new ObjectInputStream(new FileInputStream("output.dat"));
MinhaClasse minhaClasse = (MinhaClasse) input.readObject();
System.out.println(minhaClasse.getNome());
} finally {
input.close();
}
}
}

4o) Execute a App1 e depois a App2 (lembrando que as duas devem ter/enxergar a classe MinhaClasse).

Se tudo funcionar bem, o valor é transferido de uma aplicação para outra.
Legal, não? O mais legal é que dá para transferir via Socket (mas este, fica para um próximo post...)

Até!

Nenhum comentário: