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.

Como manipular objetos serializados

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.

Links Úteis

  • Segurança de web services em Java com controle de acesso:
    Neste curso vamos aprender a programar um mecanismo de autorização para controle de acesso às diferentes funcionalidades oferecidas por uma Web API RESTful, configurando para três tipos de usuário (cliente, funcionário e administrador) diferentes tipos de permissão.
  • Curso de Yarn:
    Neste curso aprenderemos o que é o Yarn: um gerenciador de dependências concorrente do NPM que promete ser mais rápido e eficiente que este.
  • Curso de Web services RESTful com Spring framework e JPA:
    Neste curso você vai aprender a criar sua primeira API REST baseada nos recursos do Spring Framework. Veremos como declarar corretamente os verbos HTTP em cada recurso consumido e também como definir, de forma apropriada, o status de cada resposta fornecida pela API.

Saiba mais sobre Java ;)

  • Guia de Java:
    Encontre aqui os Guias de estudo que vão ajudar você a aprofundar seu conhecimento na linguagem Java. Desde o básico ao mais avançado. Escolha o seu!
  • Cursos de Java Online:
    Torne-se um programador Java completo. Aqui você encontra cursos sobre as mais ferramentas e frameworks do universo Java. Aprenda a desenvolver sites e web services com JSF, Jersey, Hibernate e mais.
  • O que é Spring?:
    Neste curso você aprenderá o que é o Spring, framework Java criado com o objetivo de facilitar o desenvolvimento de aplicações e que explora, para isso, os conceitos de inversão de controle e injeção de dependências.