En este tutorial, aprenderemos sobre Java ObjectOutputStream y sus métodos con la ayuda de ejemplos.
La ObjectInputStream
clase del java.io
paquete se puede usar para leer objetos que fueron escritos previamente por ObjectOutputStream
.
Extiende la InputStream
clase abstracta.
Antes de aprender sobre la ObjectInputStream
clase, asegúrese de conocer la clase ObjectOutputStream.
Trabajo de ObjectInputStream
Se ObjectInputStream
utiliza principalmente para leer datos escritos por ObjectOutputStream
.
Básicamente, ObjectOutputStream
convierte 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 ObjectInputStream
que 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.ObjectInputStream
primero 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, objStream
se puede usar para leer objetos del archivo.
Métodos de ObjectInputStream
La ObjectInputStream
clase proporciona implementaciones de diferentes métodos presentes en la InputStream
clase.
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 ObjectInputStream
clase para leer objetos escritos por la ObjectOutputStream
clase.
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 ObjectOutputStream
para 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
ObjectOutputStream
salida con nombre usando elFileOutputStream
archivo con nombreObjectInputStream
entrada con nombre usando elFileInputStream
fileStream 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 Serializable
interfaz. Es porque ObjectOutputStream
solo 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).