Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Dominando ObjectInputStream de Java: Guía Completa

Clase ObjectInputStream de Java

Explora cómo leer objetos serializados en Java con ObjectInputStream, completo con ejemplos paso a paso y consejos prácticos.

La clase ObjectInputStream en el paquete java.io te permite deserializar objetos que fueron escritos previamente por ObjectOutputStream. Extiende la clase abstracta InputStream.

Antes de sumergirte en ObjectInputStream, asegúrate de estar familiarizado con la clase ObjectOutputStream, ya que maneja el proceso de serialización.

Cómo Funciona ObjectInputStream

La serialización transforma objetos de Java en un flujo de bytes que puede almacenarse o transmitirse. La deserialización—el proceso inverso—es manejada por ObjectInputStream, que lee el flujo de bytes y reconstruye los objetos originales.

Crear un ObjectInputStream

Para crear un ObjectInputStream, primero importa la clase y luego víncala a una fuente, típicamente un FileInputStream:

// Vincular a un archivo
FileInputStream flujoArchivo = new FileInputStream("ejemplo.dat");
// Envolverlo en un ObjectInputStream
ObjectInputStream flujoObj = new ObjectInputStream(flujoArchivo);

Una vez instanciado, flujoObj puede leer cualquier objeto serializado del archivo.

Métodos Principales de ObjectInputStream

A continuación se muestran los métodos más utilizados:

Ejemplo 1: Deserialización Básica

A continuación se muestra un ejemplo mínimo que escribe un entero y una cadena en un archivo, luego los lee de vuelta.

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int dato1 = 5;
        String dato2 = "Esto es programiz";
        try {
            // Escribir datos
            FileOutputStream fos = new FileOutputStream("archivo.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeInt(dato1);
            oos.writeObject(dato2);
            // Leer datos
            FileInputStream fis = new FileInputStream("archivo.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            System.out.println("Dato entero: " + ois.readInt());
            System.out.println("Dato cadena: " + ois.readObject());
            oos.close();
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Salida

Dato entero: 5
Dato cadena: Esto es programiz

Ejemplo 2: Deserializando un Objeto Personalizado

Serializa y deserializa un objeto Perro simple. Recuerda, la clase debe implementar Serializable para que esto funcione.

import java.io.*;

class Perro implements Serializable {
    String nombre;
    String raza;
    Perro(String nombre, String raza) {
        this.nombre = nombre;
        this.raza = raza;
    }
}

public class Main {
    public static void main(String[] args) {
        Perro perro = new Perro("Tyson", "Labrador");
        try {
            // Serializar
            FileOutputStream fos = new FileOutputStream("archivo.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(perro);
            // Deserializar
            FileInputStream fis = new FileInputStream("archivo.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Perro nuevoPerro = (Perro) ois.readObject();
            System.out.println("Nombre del Perro: " + nuevoPerro.nombre);
            System.out.println("Raza del Perro: " + nuevoPerro.raza);
            oos.close();
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Salida

Nombre del Perro: Tyson
Raza del Perro: Labrador

Conclusiones clave:

Métodos Adicionales de ObjectInputStream

MétodoDescripción
available()Retorna el número de bytes que se pueden leer sin bloqueo.
mark()Marca la posición actual en el flujo.
reset()Restablece el flujo a la marca más reciente.
skipBytes(int n)Salta n bytes.
close()Cierra el flujo y libera recursos.

Para más detalles, visita la documentación oficial de Java.

Java

  1. Palabra clave final en Java: Variables, métodos y clases
  2. Operador instanceof en Java: Guía completa
  3. Dominando la herencia en Java: Conceptos, tipos y ejemplos prácticos
  4. Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
  5. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  6. Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
  7. Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
  8. Dominando ArrayList en Java: Operaciones, métodos y mejores prácticas
  9. Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
  10. Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
  11. Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación