Dans ce didacticiel, nous allons découvrir Java ObjectOutputStream et ses méthodes à l'aide d'exemples.
La ObjectInputStream
classe du java.io
package peut être utilisée pour lire des objets précédemment écrits par ObjectOutputStream
.
Il étend la InputStream
classe abstraite.
Avant d'en savoir plus sur la 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
.
Fondamentalement, 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 avons besoin de 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 d'abord importer le java.io.ObjectInputStream
package. Une fois que nous avons importé le package, voici comment nous pouvons 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
La ObjectInputStream
classe fournit des implémentations des différentes méthodes présentes dans la InputStream
classe.
read (), méthode
read()
- lit un octet de données dans le 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 la ObjectInputStream
classe pour lire les objets écrits par la 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(); ) ) )
Production
Données entières: 5 Données de chaîne: Ceci est programiz
Dans l'exemple ci-dessus, nous avons utilisé la méthode readInt()
et readObject()
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(); ) ) )
Production
Nom du chien: Tyson Race de chien: Labrador
Dans l'exemple ci-dessus, nous avons créé
ObjectOutputStream
sortie nommée à l'aide duFileOutputStream
fichier nomméObjectInputStream
entrée nommée à l'aide duFileInputStream
fileStream nommé- Un chien objet de la classe Chien
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 : la classe Dog implémente l' Serializable
interface. C'est parce que le ObjectOutputStream
seul écrit 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 Java officielle).