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 ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos

Clase ObjectOutputStream de Java

Explora la API de ObjectOutputStream de Java, sus métodos principales y ejemplos paso a paso que demuestran cómo serializar objetos a archivos y leerlos de vuelta.

La clase ObjectOutputStream del paquete java.io te permite escribir objetos de Java para que puedan ser leídos después por ObjectInputStream. Extiende OutputStream y es la base del mecanismo de serialización integrado de Java.

Cómo Funciona ObjectOutputStream

Cuando escribes un objeto en un ObjectOutputStream, el framework codifica el nombre de la clase del objeto, valores de campos e información de tipo en un formato binario—un proceso conocido como serialización. El flujo de bytes resultante puede almacenarse en un archivo, transmitirse por red o incluso incrustarse en memoria.

Importante: Solo los objetos que implementan java.io.Serializable pueden ser serializados. Esta interfaz actúa como un marcador para informar al runtime que un objeto es seguro para persistir o transmitir.

Crear un ObjectOutputStream

Comienza importando la clase:

import java.io.ObjectOutputStream;

Luego, vínculo a un FileOutputStream o cualquier otro OutputStream subyacente:

// Escribir en un archivo llamado "datos.bin"
FileOutputStream flujoArchivo = new FileOutputStream("datos.bin");
ObjectOutputStream flujoObj = new ObjectOutputStream(flujoArchivo);

Aquí, flujoObj está listo para serializar objetos en flujoArchivo.

Métodos Principales de ObjectOutputStream

La clase hereda un conjunto de métodos de OutputStream y añade otros especializados para manejo de objetos:

Ejemplo 1: Serializando Datos Primitivos y String

A continuación se muestra un fragmento completo que escribe un int y un String en un archivo, luego los lee de vuelta usando ObjectInputStream:

import java.io.*;

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

Salida

Dato entero: 5
Dato cadena: Esto es programiz

Ejemplo 2: Serializando un Objeto Personalizado

Para serializar una clase definida por el usuario, simplemente implementa Serializable:

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 perro1 = new Perro("Tyson", "Labrador");
        try {
            // Escribir el objeto
            FileOutputStream fos = new FileOutputStream("perro.bin");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(perro1);
            oos.close();
            // Leer el objeto
            FileInputStream fis = new FileInputStream("perro.bin");
            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);
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Salida

Nombre del Perro: Tyson
Raza del Perro: Labrador

La clase Perro debe implementar Serializable porque ObjectOutputStream solo puede escribir objetos serializables.

Operaciones Adicionales de ObjectOutputStream

MétodoDescripción
flush()Vacía cualquier byte de salida en búfer al flujo subyacente.
drain()Vacía datos en búfer (disponible en Java 9+).
close()Cierra el flujo y libera cualquier recurso del sistema.

Para una inmersión más profunda, consulta 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. Clase Stack de Java: Guía Completa de Uso y Métodos
  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