Clase Java ObjectOutputStream
Clase Java ObjectOutputStream
En este tutorial, aprenderemos sobre Java ObjectOutputStream y sus métodos con la ayuda de ejemplos.
El ObjectOutputStream
clase del java.io
El paquete se puede usar para escribir objetos que pueden ser leídos por ObjectInputStream
.
Extiende el OutputStream
clase abstracta.
Funcionamiento de ObjectOutputStream
Básicamente, el ObjectOutputStream
codifica objetos Java usando el nombre de la clase y los valores del objeto. Y, por lo tanto, genera flujos correspondientes. Este proceso se conoce como serialización.
Esos flujos convertidos se pueden almacenar en archivos y se pueden transferir entre redes.
Nota :El ObjectOutputStream
class solo escribe aquellos objetos que implementan el Serializable
interfaz. Esto se debe a que los objetos deben serializarse mientras se escriben en la secuencia
Crear un ObjectOutputStream
Para crear un flujo de salida de objetos, debemos importar el java.io.ObjectOutputStream
paquete primero. 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
El ObjectOutputStream
La clase proporciona implementaciones para diferentes métodos presentes en el OutputStream
clase.
método escribir()
write()
- escribe un byte de datos en el flujo de salidawriteBoolean()
- escribe datos en formato booleanowriteChar()
- escribe datos en forma de caractereswriteInt()
- escribe datos en forma de número 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
para 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
Integer data: 5 String data: This is programiz
En el ejemplo anterior, hemos utilizado el readInt()
método y readObject()
método para leer datos enteros y datos de objetos de los archivos.
Aquí, hemos usado el 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
Dog Name: Tyson Dog Breed: Labrador
En el ejemplo anterior, hemos creado
ObjectOutputStream
llamado objOut utilizando elFileOutputStream
llamado fileOutObjectInputStream
llamado objIn utilizando elFileInputStream
llamado fileIn .- Un objeto perro1 del Perro clase.
Aquí, hemos usado 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 :El Perro clase implementa el Serializable
interfaz. Es porque el ObjectOutputStream
solo escribe objetos 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 el 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).
Java