En este tutorial, aprenderemos sobre Java ObjectOutputStream y sus métodos con la ayuda de ejemplos.
La ObjectInputStreamclase del java.iopaquete se puede usar para leer objetos que fueron escritos previamente por ObjectOutputStream.
Extiende la InputStreamclase abstracta.

Antes de aprender sobre la ObjectInputStreamclase, asegúrese de conocer la clase ObjectOutputStream.
Trabajo de ObjectInputStream
Se ObjectInputStreamutiliza principalmente para leer datos escritos por ObjectOutputStream.
Básicamente, ObjectOutputStreamconvierte los objetos Java en los flujos correspondientes. Esto se conoce como serialización. Esas transmisiones convertidas se pueden almacenar en archivos o transferir a través de redes.
Ahora, si necesitamos leer esos objetos, usaremos el ObjectInputStreamque convertirá los flujos de nuevo en los objetos correspondientes. Esto se conoce como deserialización.
Crear un ObjectInputStream
Para crear un flujo de entrada de objeto, java.io.ObjectInputStreamprimero debemos importar el paquete. Una vez que importamos el paquete, así es como podemos crear un flujo de entrada.
// Creates a file input stream linked with the specified file FileInputStream fileStream = new FileInputStream(String file); // Creates an object input stream using the file input stream ObjectInputStream objStream = new ObjectInputStream(fileStream);
En el ejemplo anterior, hemos creado un flujo de entrada de objeto llamado objStream que está vinculado con el flujo de entrada de archivo llamado fileStream.
Ahora, objStreamse puede usar para leer objetos del archivo.
Métodos de ObjectInputStream
La ObjectInputStreamclase proporciona implementaciones de diferentes métodos presentes en la InputStreamclase.
Método read ()
read()- lee un byte de datos del flujo de entradareadBoolean()- lee datos en forma booleanareadChar()- lee datos en forma de caracteresreadInt()- lee datos en forma de números enterosreadObject()- lee el objeto del flujo de entrada
Ejemplo 1: Java ObjectInputStream
Veamos cómo podemos usar la ObjectInputStreamclase para leer objetos escritos por la ObjectOutputStreamclase.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; class Main ( public static void main(String() args) ( int data1 = 5; String data2 = "This is programiz"; try ( FileOutputStream file = new FileOutputStream("file.txt"); ObjectOutputStream output = new ObjectOutputStream(file); // Writing to the file using ObjectOutputStream output.writeInt(data1); output.writeObject(data2); FileInputStream fileStream = new FileInputStream("file.txt"); // Creating an object input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); //Using the readInt() method System.out.println("Integer data :" + objStream.readInt()); // Using the readObject() method System.out.println("String data: " + objStream.readObject()); output.close(); objStream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Salida
Datos enteros: 5 datos de cadena: esto es programiz
En el ejemplo anterior, hemos utilizado el método readInt()y readObject()para leer datos enteros y datos de objetos del archivo.
Aquí, hemos utilizado ObjectOutputStreampara escribir datos en el archivo. Luego leemos los datos del archivo usando el ObjectInputStream.
Ejemplo 2: Java ObjectInputStream
Veamos otro ejemplo práctico,
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Dog implements Serializable ( String name; String breed; public Dog(String name, String breed) ( this.name = name; this.breed = breed; ) ) class Main ( public static void main(String() args) ( // Creates an object of Dog class Dog dog = new Dog("Tyson", "Labrador"); try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // Writes objects to the output stream output.writeObject(dog); FileInputStream fileStream = new FileInputStream("file.txt"); // Creates an ObjectInputStream ObjectInputStream input = new ObjectInputStream(fileStream); // Reads the objects Dog newDog = (Dog) input.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); output.close(); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Salida
Nombre del perro: Tyson Raza de perro: Labrador
En el ejemplo anterior, hemos creado
ObjectOutputStreamsalida con nombre usando elFileOutputStreamarchivo con nombreObjectInputStreamentrada con nombre usando elFileInputStreamfileStream con nombre- Un perro objeto de la clase Perro.
Aquí, hemos utilizado el flujo de salida del objeto para escribir el objeto en el archivo. Y, el flujo de entrada del objeto para leer el objeto del archivo.
Nota : La clase Dog implementa la Serializableinterfaz. Es porque ObjectOutputStreamsolo escribe los objetos serializables en el flujo de salida.
Otros métodos de ObjectInputStream
| Métodos | Descripciones |
|---|---|
available() | devuelve el número disponible de bytes en el flujo de entrada |
mark() | marca la posición en el flujo de entrada hasta la cual se han leído los datos |
reset() | devuelve el control al punto en el flujo de entrada donde se estableció la marca |
skipBytes() | omite y descarta los bytes especificados del flujo de entrada |
close() | cierra el flujo de entrada del objeto |
Para obtener más información, visite Java ObjectInputStream (documentación oficial de Java).








