Classe Java ObjectInputStream
Classe Java ObjectInputStream
Dans ce didacticiel, nous allons découvrir Java ObjectOutputStream et ses méthodes à l'aide d'exemples.
Le ObjectInputStream
classe du java.io
package peut être utilisé pour lire des objets qui ont été précédemment écrits par ObjectOutputStream
.
Il étend le InputStream
classe abstraite.
Avant de découvrir le ObjectInputStream
classe, assurez-vous de connaître la classe ObjectOutputStream.
Fonctionnement d'ObjectInputStream
Le ObjectInputStream
est principalement utilisé pour lire les données écrites par le ObjectOutputStream
.
En gros, le ObjectOutputStream
convertit les objets Java en flux correspondants. C'est ce qu'on appelle la sérialisation. Ces flux convertis peuvent être stockés dans des fichiers ou transférés via des réseaux.
Maintenant, si nous devons lire ces objets, nous utiliserons le ObjectInputStream
qui reconvertira les flux en objets correspondants. C'est ce qu'on appelle la désérialisation.
Créer un ObjectInputStream
Afin de créer un flux d'entrée d'objet, nous devons importer le java.io.ObjectInputStream
paquet d'abord. Une fois le package importé, voici comment créer un flux d'entrée.
// 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);
Dans l'exemple ci-dessus, nous avons créé un flux d'entrée d'objet nommé objStream qui est lié au flux d'entrée de fichier nommé fileStream .
Maintenant, le objStream
peut être utilisé pour lire des objets à partir du fichier.
Méthodes d'ObjectInputStream
Le ObjectInputStream
la classe fournit des implémentations de différentes méthodes présentes dans le InputStream
classe.
méthode read()
read()
- lit un octet de données du flux d'entréereadBoolean()
- lit les données sous forme booléennereadChar()
- lit les données sous forme de caractèresreadInt()
- lit les données sous forme entièrereadObject()
- lit l'objet à partir du flux d'entrée
Exemple 1 :Java ObjectInputStream
Voyons comment nous pouvons utiliser le ObjectInputStream
classe pour lire les objets écrits par le ObjectOutputStream
classe.
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();
}
}
}
Sortie
Integer data: 5 String data: This is programiz
Dans l'exemple ci-dessus, nous avons utilisé le readInt()
et readObject()
méthode pour lire des données entières et des données d'objet à partir du fichier.
Ici, nous avons utilisé le ObjectOutputStream
pour écrire des données dans le fichier. Nous lisons ensuite les données du fichier en utilisant le ObjectInputStream
.
Exemple 2 :Java ObjectInputStream
Voyons un autre exemple pratique,
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();
}
}
}
Sortie
Dog Name: Tyson Dog Breed: Labrador
Dans l'exemple ci-dessus, nous avons créé
ObjectOutputStream
nommé sortie en utilisant leFileOutputStream
nommé fichierObjectInputStream
nommée entrée en utilisant leFileInputStream
nommé fileStream- Un objet chien du Chien classe
Ici, nous avons ensuite utilisé le flux de sortie de l'objet pour écrire l'objet dans le fichier. Et, le flux d'entrée d'objet pour lire l'objet à partir du fichier.
Remarque :Le chien la classe implémente le Serializable
interface. C'est parce que le ObjectOutputStream
écrit uniquement les objets sérialisables dans le flux de sortie.
Autres méthodes d'ObjectInputStream
Méthodes | Descriptions |
---|---|
available() | renvoie le nombre d'octets disponibles dans le flux d'entrée |
mark() | marque la position dans le flux d'entrée jusqu'à laquelle les données ont été lues |
reset() | renvoie le contrôle au point du flux d'entrée où la marque a été définie |
skipBytes() | ignore et supprime les octets spécifiés du flux d'entrée |
close() | ferme le flux d'entrée de l'objet |
Pour en savoir plus, visitez Java ObjectInputStream (documentation officielle de Java).
Java