Produto

Propaganda
Aula 20 – Serialização
Disciplina: Programação Estruturada e Orientada a Objetos
Prof. Bruno Gomes
http://www.profbrunogomes.com.br/
Agenda da Aula

Serialização de Objetos
Serialização de Objetos

Serialização de Objetos consiste em transformálo em bytes, permitindo ser armazenado em
disco ou transmitido por um stream.


Stream é um objeto responsável por uma transmissão
de dados, de uma origem a um destino.
Resumindo:

Permite salvar e recuperar o estado de um objeto;
Tipos de Armazenamento





Arquivos de Textos;
Arquivos Properties;
Arquivos XML;
Banco de dados.
Entre inúmeros outros.
Arquivo de Texto

Para gravar informações em arquivos de texto, é
necessário utilizar um tipo de Stream, nesta aula
vamos utilizar:

FileOutputStream:


FileInputStream


Responsável pela gravação em um arquivo.
Responsável pela leitura de um arquivo.
Ficam no pacote java.io:

Classes que controlam entrada e saída de dados
PERSISTÊNCIA DE DADOS
Primeiro Passo
Criar uma Classe Modelo e implementar de
Serializable.
 Exemplo para Produto:

import java.io.Serializable;
public class Produto implements Serializable{
private String nome;
private String codigoBarras;
}
Primeiro Passo

Na Classe Produto criar:



Um construtor parametrizado;
Todos os métodos GETs e SETs;
Método toString.
Segundo Passo
Criar um nova classe (Utilidade), que terá os métodos
de armazenamento e leitura dos dados.
 Criar um método que receberá um objeto Produto e
armazenará em um arquivo:

public class Utilidade {
public void armazenarProduto(Produto produto){
}
}
Segundo Passo

Criar um objeto do tipo FileOutputStream, e
indicar o local até o arquivo em que os dados
serão salvos.
import java.io.FileOutputStream;
public class Utilidade {
public void armazenarProduto(Produto produto){
FileOutputStream gravacao =
new FileOutputStream("c:/Aula/teste.txt");
}
}
Terceiro Passo

Adicionar o código entre um Try…Catch para tratamento
de exceção (caso não encontre um arquivo, ou qualquer
outro problema:
import java.io.FileOutputStream;
public class Utilidade {
public void armazenarProduto(Produto produto){
try{
FileOutputStream gravacao =
new FileOutputStream("c:/Aula/teste.txt");
}catch( Exception e ){
e.printStackTrace( );
}
}
}
ObjectOutputStream

Utilizar um objeto ObjectOutputStream para trabalhar
diretamente com objetos na stream:
try{
FileOutputStream gravacao =
new FileOutputStream("c:/Aula/teste.txt");
ObjectOutputStream objGravar = new ObjectOutputStream(gravacao);
objGravar.writeObject(produto);
objGravar.flush();
objGravar.close();
gravacao.flush();
gravacao.close();
Importar
}catch( Exception e ){
e.printStackTrace( );
}
java.io.ObjectOutputStream;
Quarto Passo

Criar manualmente o arquivo vazio na pasta de
destino (com o mesmo nome do indicado no
objeto FileOutputStream)


c:/Aula/teste.txt
Obs.: o arquivo é criado automaticamente, mas
alguns servidores e sistemas operacionais não
dão permissão para esta operação, por isso a
criação manual.
Quinto Passo

Criar uma classe de teste, criar um objeto Produto, e
armazenar através da Classe Utilidade.
public class TesteSerializacao {
public static void main(String[] args) {
Produto p1 = new Produto("Arroz", "123456");
Utilidade u1 = new Utilidade();
u1.armazenarProduto(p1);
}
}

Executar e verificar se o arquivo foi preenchido com os dados
de Produto.
LEITURA DE ARQUIVO
Lendo Arquivos
Primeiro Passo

Na classe Utilidade, acrescentar o método de
leitura, e retornar um objeto Produto:
public class Utilidade {
public Produto lerProduto(){
}
Segundo Passo

Implementar FileInputStream
caminho do arquivo de leitura;
indicando
o
FileInputStream leitura = new FileInputStream("c:/Aula/teste.txt");
Terceiro Passo

Utilizar
Try..Catch
e
um
objeto
ObjectInputStream para a leitura e conversão em
objeto:
public Produto lerProduto(){
try{
FileInputStream leitura = new FileInputStream("c:/Aula/teste.txt");
ObjectInputStream objLeitura = new ObjectInputStream(leitura);
Produto produto = (Produto)objLeitura.readObject();
objLeitura.close();
leitura.close();
return produto;
}catch( Exception e ){
e.printStackTrace( );
}
return null;
}
Na Classe de Teste

Acrescentar:
Produto p1 = new Produto("Arroz", "123456");
Utilidade u1 = new Utilidade();
u1.armazenarProduto(p1);
Produto produtoRecuperado = u1.lerProduto();
System.out.println(produtoRecuperado.getNome());
System.out.println(produtoRecuperado.getCodigoBarras());
Criando o arquivo dentro do
projeto

Mudar a referência dos objetos:
FileInputStream leitura = new FileInputStream("./teste.txt");
FileOutputStream gravacao = new FileOutputStream("./teste.txt");

Obs.: O “.” indica a raiz do projeto.

Obs.: Se quiser que fiquem em alguma pasta,
basta adicioná-la:

"./arquivos/teste.txt"
Dúvidas?
Download