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.
DevCast: Programador Java: Por onde começar?
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.