sexta-feira, 7 de novembro de 2014

Java: Serializar e deserializar lista de objetos, salva-lo em arquivo e recuperá-lo em lista de objetos novamente

Esta classe tem me ajudado muito desde o dia em que foi criada. Já reaproveitei pelo menos 5 vezes.


 1 package Arquivos;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.ObjectInputStream;
 8 import java.io.ObjectOutputStream;
 9 import java.util.List;
10 import java.util.ArrayList;
11 
12 
13 // Referencia:
14 // http://www.javasimples.com.br/core-java/serializacao-transformando-objetos-em-bytes
15 public class Crud
16 {
17 
18     public void serializar(List<String> filmes, String arquivo)
19     {
20         FileOutputStream arq = null;
21         ObjectOutputStream out = null;
22         try
23         {
24             //arquivo no qual os dados vao ser gravados
25             arq = new FileOutputStream(arquivo);
26 
27             //objeto que vai escrever os dados
28             out = new ObjectOutputStream(arq);
29 
30             //escreve todos os dados
31             out.writeObject(filmes);
32         }
33         catch (IOException ex)
34         {
35             ex.printStackTrace();
36         }
37         finally
38         {
39             try
40             {
41                 arq.close();
42                 out.close();
43             }
44             catch (IOException ex)
45             {
46                 ex.printStackTrace();
47             }
48         }
49     }
50 
51     public List<String> deserializar(String arquivo)
52     {
53         FileInputStream arqLeitura = null;
54         ObjectInputStream in = null;
55         List<String> lista = null;
56         try
57         {
58             File destinationFile = new File(arquivo);
59             if (!destinationFile.exists())
60             {
61                 serializar(new ArrayList<String>(), arquivo);
62             }
63             
64             //arquivo onde estao os dados serializados
65             arqLeitura = new FileInputStream(arquivo);
66 
67             //objeto que vai ler os dados do arquivo
68             in = new ObjectInputStream(arqLeitura);
69 
70             //recupera os dados
71             lista = (List<String>) in.readObject();
72         }
73         catch (ClassNotFoundException ex)
74         {
75             ex.printStackTrace();
76         }
77         catch (IOException ex)
78         { 
79             ex.printStackTrace();
80         }
81         finally
82         {
83             try
84             {
85                 arqLeitura.close();
86                 in.close();
87             }
88             catch (IOException ex)
89             {
90                 ex.printStackTrace();
91             }
92         } 
93         return lista;
94     }
95 }
96 

Nenhum comentário: