Buscar

LPI 09 - Persistência em Arquivos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de Programação I
Persistência em Arquivos 
Joinvile Batista Junior
UFGD - LPI 09 - Joinvile Batista Junior 22
Persistência em Arquivo : Serialização
• um grafo de objetos apontados por um objeto raiz pode ser salvo em um 
arquivo e posteriormente recuperado
– cada referência entre objetos é serializada em um inteiro para ser 
salva em arquivo
– na recuperação cada inteiro é reconvertido em referência
– para ser serializável a classe deve implementar Serializable
– public class Cliente implements Serializable { ... }
• método genérico de salvamento
– recebe como parâmetros: objeto raiz e nome do arquivo
• método genérico de recuperação
– recebe como parâmetros: nome do arquivo
– e devolve objeto raiz referenciando grafo de objetos lido do arquivo 
como resultado
• para salvar conjuntos de objetos de uma aplicação
– criar objeto da classe principal da aplicação referenciando os 
conjuntos que armazenam os objetos da aplicação 
UFGD - LPI 09 - Joinvile Batista Junior 33
Persistência em Arquivo : Serialização
package persistência;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
UFGD - LPI 09 - Joinvile Batista Junior 44
Persistência em Arquivo : Serialização
public class Serialização {
public static void salvar (Object raiz, String nome_arquivo){
if (raizObject == null) return;
try{
ObjectOutputStream output = new ObjectOutputStream
(new FileOutputStream (nome_arquivo + ".bds"));
output.writeObject(raiz);
output.close();
} catch (Exception exceção) {
System.out.println("Falha ao salvar no arquivo”
+ nome_arquivo + “.bds”);
}
}
UFGD - LPI 09 - Joinvile Batista Junior 55
Persistência em Arquivo : Serialização
public static Object recuperar (String nome_arquivo){
try{
ObjectInputStream input = new ObjectInputStream
(new FileInputStream (nome_arquivo + ".bds"));
Object raizObject = input.readObject();
return raizObject;
} catch (Exception exceção){
System.output.println("Falha na recuperação do arquivo " 
+ nome_arquivo + ".bds");
return null;
}
}
}
UFGD - LPI 09 - Joinvile Batista Junior 66
Salvando Conjuntos de Objetos da Aplicação
• em outra classe da aplicação
• exemplo para persistir objetos de Cliente e Filme da Videolocadora
public static void salvarAplicação () {
ArrayList objetos_aplicação = new ArrayList ();
objetos_aplicação.add (Cliente.getAlunos());
objetos_aplicação.add (Filme.getFilmes());
Serialização.salvar (objetos_aplicação, “VideoLocadora");
}
UFGD - LPI 09 - Joinvile Batista Junior 77
Recuperando Conjuntos de Objetos da Aplicação
• em outra classe da aplicação
• exemplo para recuperar objetos de Cliente e Filme da Videolocadora
public static void recuperarAplicação () {
ArrayList objetos_aplicação = (ArrayList) Serialização.recuperar
("VideoLocadora");
if (objetos_aplicação != null) {
Cliente.setConjunto((ArrayList<Cliente>)objetos_aplicação.get(0));
Filme.setConjunto((ArrayList<Filme>)objetos_aplicação.get(1));
}
}
UFGD - LPI 09 - Joinvile Batista Junior 88
Exercícios - 09
• 9.1 – Crie uma classe Filme com: nome, diretor, ator_principal e 
atriz_principal. Idem para Diretor com: nome e ganhador_oscar. Idem 
para Ator com: nome, n_oscars. Na classe Principal: 
– utilize o método recuperarAplicação, da classe Serialização do 
pacote persistência, para recuperar os objetos do arquivo e atualizar 
as listas globais das classes do pacote entidade
– se existir algum filme cadastrado
• imprima os nomes dos filmes, diretores e atores e finalize
– crie e insira nas listas globais das classes entidade
• 3 diretores, 3 atores, 3 atrizes e 3 filmes
– utilize o métodos salvarAplicação, da classe Serialização do pacote 
persistência, para salvar os objetos das listas globais das classes do 
pacote entidade em um arquivo

Outros materiais