Java ObjectOutputStream (con ejemplos)

En este tutorial, aprenderemos sobre Java ObjectOutputStream y sus métodos con la ayuda de ejemplos.

La ObjectOutputStreamclase del java.iopaquete se puede utilizar para escribir objetos que puedan leer ObjectInputStream.

Extiende la OutputStreamclase abstracta.

Trabajo de ObjectOutputStream

Básicamente, ObjectOutputStreamcodifica los objetos Java utilizando el nombre de la clase y los valores del objeto. Y, por lo tanto, genera las corrientes correspondientes. Este proceso se conoce como serialización.

Esos flujos convertidos se pueden almacenar en archivos y se pueden transferir entre redes.

Nota : La ObjectOutputStreamclase solo escribe aquellos objetos que implementan la Serializableinterfaz. Esto se debe a que los objetos deben serializarse al escribir en la secuencia.

Crear un ObjectOutputStream

Para crear un flujo de salida de objeto, java.io.ObjectOutputStreamprimero debemos importar el paquete. Una vez que importamos el paquete, así es como podemos crear un flujo de salida.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

En el ejemplo anterior, hemos creado un flujo de salida de objeto llamado objStream que está vinculado con el flujo de salida del archivo llamado fileStream.

Métodos de ObjectOutputStream

La ObjectOutputStreamclase proporciona implementaciones para diferentes métodos presentes en la OutputStreamclase.

método de escritura

  • write() - escribe un byte de datos en el flujo de salida
  • writeBoolean() - escribe datos en forma booleana
  • writeChar() - escribe datos en forma de caracteres
  • writeInt() - escribe datos en forma de entero
  • writeObject() - escribe el objeto en el flujo de salida

Ejemplo 1: Java ObjectOutputStream

Veamos cómo podemos usar ObjectOutputStreampara almacenar objetos en un archivo y ObjectInputStreamleer esos objetos de los archivos.

 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"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // writes objects to output stream output.writeInt(data1); output.writeObject(data2); // Reads data using the ObjectInputStream FileInputStream fileStream = new FileInputStream("file.txt"); ObjectInputStream objStream = new ObjectInputStream(fileStream); System.out.println("Integer data :" + objStream.readInt()); 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 readInt()método y el readObject()método para leer datos enteros y datos de objetos de los archivos.

Aquí, hemos utilizado ObjectOutputStreampara escribir datos en el archivo. Luego leemos los datos del archivo usando el ObjectInputStream.

Ejemplo 2: Java ObjectOutputStream

Tomemos otro ejemplo,

 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 dog1 = new Dog("Tyson", "Labrador"); try ( FileOutputStream fileOut = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); // Writes objects to the output stream objOut.writeObject(dog1); // Reads the object FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // Reads the objects Dog newDog = (Dog) objIn.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); objOut.close(); objIn.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Salida

 Nombre del perro: Tyson Raza de perro: Labrador 

En el ejemplo anterior, hemos creado

  • ObjectOutputStreamnamed objOut usando el FileOutputStreamnombre fileOut
  • ObjectInputStreamnamed objIn usando el FileInputStreamnombre fileIn.
  • Un objeto dog1 de la clase Dog.

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 los ObjectOutputStreamúnicos objetos de escritura que se pueden serializar en el flujo de salida.

Otros métodos de ObjectOutputStream

Métodos Descripciones
flush() borra todos los datos del flujo de salida
drain() coloca todos los datos almacenados en búfer en el flujo de salida
close() cierra el flujo de salida

Para obtener más información, visite Java ObjectOutputStream (documentación oficial de Java).

Articulos interesantes...