Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Dominando ObjectInputStream do Java: Guia Completo

Classe Java ObjectInputStream

Explore como ler objetos serializados em Java com ObjectInputStream, completo com exemplos passo a passo e dicas práticas.

A classe ObjectInputStream no pacote java.io permite desserializar objetos que foram previamente escritos por ObjectOutputStream. Ela estende a classe abstrata InputStream.


Como ObjectInputStream Funciona

Serialização transforma objetos Java em um stream de bytes que pode ser armazenado ou transmitido. Desserialização — o processo reverso — é tratada por ObjectInputStream, que lê o stream de bytes e reconstrói os objetos originais.


Criando um ObjectInputStream

Para criar um ObjectInputStream, primeiro importe a classe e então vincule-a a uma origem, tipicamente um FileInputStream:

// Vincula a um arquivo
FileInputStream fileStream = new FileInputStream("exemplo.dat");
// Envolve em um ObjectInputStream
ObjectInputStream objStream = new ObjectInputStream(fileStream);

Uma vez instanciado, objStream pode ler quaisquer objetos serializados do arquivo.


Métodos Principais do ObjectInputStream

Abaixo estão os métodos mais usados:


Exemplo 1: Desserialização Básica

Abaixo está um exemplo mínimo que escreve um inteiro e uma string em um arquivo, depois os lê de volta.

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int dado1 = 5;
        String dado2 = "Isto é programiz";
        try {
            // Escreve dados
            FileOutputStream fos = new FileOutputStream("arquivo.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeInt(dado1);
            oos.writeObject(dado2);
            // Lê dados
            FileInputStream fis = new FileInputStream("arquivo.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            System.out.println("Dado inteiro :" + ois.readInt());
            System.out.println("Dado string :" + ois.readObject());
            oos.close();
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Saída

Dado inteiro :5
Dado string :Isto é programiz

Exemplo 2: Desserializando um Objeto Personalizado

Serializa e desserializa um objeto Dog simples. Lembre-se, a classe deve implementar Serializable para isso funcionar.

import java.io.*;

class Dog implements Serializable {
    String nome;
    String raca;
    Dog(String nome, String raca) {
        this.nome = nome;
        this.raca = raca;
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("Tyson", "Labrador");
        try {
            // Serializa
            FileOutputStream fos = new FileOutputStream("arquivo.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(dog);
            // Desserializa
            FileInputStream fis = new FileInputStream("arquivo.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Dog novoDog = (Dog) ois.readObject();
            System.out.println("Nome do Cachorro: " + novoDog.nome);
            System.out.println("Raça do Cachorro: " + novoDog.raca);
            oos.close();
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Saída

Nome do Cachorro: Tyson
Raça do Cachorro: Labrador

Principais conclusões:


Métodos Adicionais do ObjectInputStream

MétodoDescrição
available()Retorna o número de bytes que podem ser lidos sem bloqueio.
mark()Marca a posição atual no stream.
reset()Reseta o stream para a marca mais recente.
skipBytes(int n)Pula n bytes.
close()Fecha o stream e libera recursos.

Para insights mais profundos, visite a documentação oficial do Java.

Java

  1. Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
  2. Operador instanceof em Java: Guia Completo
  3. Dominando Herança em Java: Conceitos, Tipos e Exemplos Práticos
  4. Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
  5. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  6. Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
  7. Dominando Reflection em Java: Inspecionando Classes, Métodos e Campos em Tempo de Execução
  8. Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos
  9. Dominando Java Generics – Construindo Código Reutilizável e Type-Safe
  10. Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão