Serialização | Armazenando Objetos dentro de um Arquivo com Java | Morettic

Serialização | Armazenando Objetos dentro de um Arquivo com Java

porLuis Augusto Moretto

Serialização | Armazenando Objetos dentro de um Arquivo com Java

 

INTRODUÇÃO

Java fornece um mecanismo, chamado de serialização de objetos. Com esse mecanismo um objeto pode ser representado como uma seqüência de bytes. O arquivo tem informações sobre os atributos, o tipo do objeto (metadados) e os tipos de dados armazenados no objeto.

Após a serialização de um objeto, ele pode ser lido a partir do arquivo e desserializado. As informações de tipo e os bytes que representam o objeto e seus dados poderão ser usados ​​para recriar o objeto na memória.

REQUISITOS PARA SERIALIZAR OBJETOS

Observe que, para uma classe ser serializada com sucesso, duas condições devem ser atendidas –

  • A classe deve implementar a interface java.io.Serializable.
  • Todos os campos da classe devem ser serializáveis. Se um campo não for serializável, ele deve ser marcado como transitório usando a palavra reservada transient.

Se você está curioso para saber se uma classe padrão de Java é serializável ou não, verifique a documentação para a classe. O teste é simples: se a classe implementa a interface java.io.Serializable, ela é serializável; caso contrário, não é.

SERIALIZANDO UM OBJETO

A classe ObjectOutputStream é usada para serializar um objeto. O código a seguir instancia um objeto Empregado e o serializa em um arquivo.

Quando o código é executado, um arquivo chamado employee.ser é criado.

Nota – Ao serializar um objeto para um arquivo, a convenção padrão em Java é fornecer ao arquivo uma extensão .ser .


import java.io.*;
public class SerializeDemo {

   public static void main(String [] args) {
      Employee e = new Employee("Luis Augusto Moretto");
      
      try {
         FileOutputStream fileOut = new FileOutputStream("/tmp/employee.ser");
         ObjectOutputStream out = new ObjectOutputStream(fileOut);
         out.writeObject(e);
         out.close();
         fileOut.close();
         System.out.printf("Objeto serializado em /tmp/employee.ser");
      } catch (IOException i) {
         i.printStackTrace();
      }
   }
}

LENDO OBJETOS DO ARQUIVO TEXTO

Agora que você já conseguiu escrever seu objeto em um arquivo texto vamos recuperar o mesmo. Veja o exemplo:


import java.io.*;
public class DeserializeDemo {

   public static void main(String [] args) {
      Employee e = null;
      try {
         FileInputStream fileIn = new FileInputStream("/tmp/employee.ser");
         ObjectInputStream in = new ObjectInputStream(fileIn);
         e = (Employee) in.readObject();
         in.close();
         fileIn.close();
      } catch (IOException i) {
         i.printStackTrace();
         return;
      } catch (ClassNotFoundException c) {
         System.out.println("Classe nao encontrada");
         c.printStackTrace();
         return;
      }
   }
}

SERIALIZAÇÃO DE UM ARRAYLIST

Crie uma lista de objetos e salve em Arquivo. Faça a serialização dos objetos e da lista em memória secundária (disco).

Recupere essa lista e leia os objetos apresentando seus dados na saída com Java.

Analise o conteúdo do arquivo com os objetos serializados. Veja o formato.