En este tutorial, aprenderemos sobre Java ObjectOutputStream y sus métodos con la ayuda de ejemplos.
La ObjectOutputStream
clase del java.io
paquete se puede utilizar para escribir objetos que puedan leer ObjectInputStream
.
Extiende la OutputStream
clase abstracta.
Trabajo de ObjectOutputStream
Básicamente, ObjectOutputStream
codifica 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 ObjectOutputStream
clase solo escribe aquellos objetos que implementan la Serializable
interfaz. 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.ObjectOutputStream
primero 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 ObjectOutputStream
clase proporciona implementaciones para diferentes métodos presentes en la OutputStream
clase.
método de escritura
write()
- escribe un byte de datos en el flujo de salidawriteBoolean()
- escribe datos en forma booleanawriteChar()
- escribe datos en forma de caractereswriteInt()
- escribe datos en forma de enterowriteObject()
- escribe el objeto en el flujo de salida
Ejemplo 1: Java ObjectOutputStream
Veamos cómo podemos usar ObjectOutputStream
para almacenar objetos en un archivo y ObjectInputStream
leer 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 ObjectOutputStream
para 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
ObjectOutputStream
named objOut usando elFileOutputStream
nombre fileOutObjectInputStream
named objIn usando elFileInputStream
nombre 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 Serializable
interfaz. 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).