Introdução a serialização de objetos

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (19)  (0)

Neste artigo será descrito dois tipos de stream, o FileOutputStream e o FileInputStream para manipular objetos serializados.

 

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. Neste artigo vamos descrever dois tipos de stream, o FileOutputStream e o FileInputStream para manipular objetos serializados.

 

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.

 

Para o nosso exemplo eu irei descrever a gravação / leitura de objetos serializados em um arquivo. Também serão utilizadas duas classes chamadas 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.

 

Nosso próximo artigo será sobre a manipulação de arquivos XML com o JDOM. Até lá!

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?