Java ObjectInputStream (con ejemplos)

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 entrada
  • readBoolean() - lee datos en forma booleana
  • readChar() - lee datos en forma de caracteres
  • readInt() - lee datos en forma de números enteros
  • readObject() - 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 el FileOutputStreamarchivo con nombre
  • ObjectInputStreamentrada con nombre usando el FileInputStreamfileStream 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).

Articulos interesantes...