Quando
dizemos que um objeto é serializado, estamos afirmando que este objeto será
transformado em bytes, e poderá ser armazenado em disco ou transmitido por um
stream.
O
stream é um objeto de transmissão de dados, onde um fluxo de dados serial é
feito através de uma origem e de um destino. Tomemos dois tipos de Streamers:
O
FileOutputStream é um fluxo de
arquivo que permite a gravação em disco. Já o FileInputStream é justamente o contrário, permitindo a leitura de
um arquivo em disco.
Tomemos
também duas classes: ObjectInputStream
e ObjectOutputStream. Elas são
responsáveis por inserir e recuperar objetos serializados do stream.
Vamos
ao exemplo, primeiro vamos desenvolver a classe chamada cliente, que será
utilizada como Objeto serial de armazenamento:
import
java.io.Serializable;
//A classe deve implementar Serializable
public class Cliente implements Serializable
{
private String nome;
private char sexo;
private String cpf;
public Cliente( String nome, char sexo, String cpf
) {
super( );
this.nome = nome;
this.sexo = sexo;
this.cpf = cpf;
}
public String getCpf( ) {
return cpf;
}
public void setCpf( String cpf ) {
this.cpf =
cpf; }
public String getNome( ) {
return
nome; }
public void setNome( String nome )
{
this.nome =
nome; }
public char getSexo( ) {
return
sexo; }
public void setSexo( char sexo ) {
this.sexo =
sexo; }
public String toString( ) {
return this.nome + " /
" + "Sexo: " + this.sexo + "\n" + "CPF: "
+ this.cpf; }
}
Abaixo
segue a main que executará a gravação e a leitura de objetos em um arquivo.
package
br.com.artigos.serial;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ExemploStream
{
public static void main( String[] args )
{
// Cria o
objeto serializado
Cliente cliente = new Cliente("Glaucio
Guerra",'M',"0000000001");
try
{
//Gera o arquivo para armazenar o objeto
FileOutputStream arquivoGrav =
new FileOutputStream("/Users/glaucio/Desktop/saida.dat");
//Classe
responsavel por inserir os objetos
ObjectOutputStream objGravar = new ObjectOutputStream(arquivoGrav);
//Grava o objeto cliente no arquivo
objGravar.writeObject(cliente);
objGravar.flush();
objGravar.close();
arquivoGrav.flush();
arquivoGrav.close();
System.out.println("Objeto gravado com sucesso!");
}
catch( Exception e ){
e.printStackTrace( );
}
System.out.println("Recuperando objeto:
");
try
{
//Carrega o arquivo
FileInputStream arquivoLeitura = new FileInputStreamc:/saida.dat");
//Classe responsavel por recuperar os objetos do arquivo
ObjectInputStream objLeitura
= new ObjectInputStream(arquivoLeitura);
System.out.println(objLeitura.readObject());
objLeitura.close();
arquivoLeitura.close();
}
catch( Exception e ){
e.printStackTrace( );
}
}
}
Saída:
Objeto gravado com sucesso!
Recuperando objeto:
Glaucio Guerra / Sexo: M
CPF: 0000000001
Existem diversas aplicações que utilizam o recurso de
serialização. O Hibernate, streams
para JME, e qualquer outro tipo de
aplicação que trabalhe com fluxo de I/O. Qualquer tipo de trabalho que envolver
persistência ou tramitação de dados, a serialização é necessária.

Nenhum comentário:
Postar um comentário