Clase Java ObjectInputStream
Clase Java ObjectInputStream
En este tutorial, aprenderemos sobre Java ObjectOutputStream y sus métodos con la ayuda de ejemplos.
El ObjectInputStream
clase del java.io
El paquete se puede usar para leer objetos que fueron escritos previamente por ObjectOutputStream
.
Extiende el InputStream
clase abstracta.
Antes de conocer el ObjectInputStream
clase, asegúrese de conocer la clase ObjectOutputStream.
Funcionamiento de ObjectInputStream
Los ObjectInputStream
se utiliza principalmente para leer datos escritos por el ObjectOutputStream
.
Básicamente, el ObjectOutputStream
convierte objetos Java en flujos correspondientes. Esto se conoce como serialización. Esas secuencias 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 objetos, debemos importar el java.io.ObjectInputStream
paquete primero. 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 objetos llamado objStream que está vinculado con el flujo de entrada del archivo llamado fileStream .
Ahora, el objStream
se puede utilizar para leer objetos del archivo.
Métodos de ObjectInputStream
El ObjectInputStream
La clase proporciona implementaciones de diferentes métodos presentes en el 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úmero enteroreadObject()
- lee el objeto del flujo de entrada
Ejemplo 1:Java ObjectInputStream
Veamos cómo podemos usar el ObjectInputStream
clase para leer objetos escritos por el 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
Integer data: 5 String data: This is programiz
En el ejemplo anterior, hemos utilizado el readInt()
y readObject()
método para leer datos enteros y datos de objetos del archivo.
Aquí, hemos usado el 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
Dog Name: Tyson Dog Breed: Labrador
En el ejemplo anterior, hemos creado
ObjectOutputStream
salida nombrada usando elFileOutputStream
llamado archivoObjectInputStream
llamado entrada usando elFileInputStream
llamado fileStream- Un objeto perro 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 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 que se han leído los datos |
reset() | devuelve el control al punto en el flujo de entrada donde se estableció la marca |
skipBytes() | salta 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).
Java