Java ObjectInputStream (avec des exemples)

Dans ce didacticiel, nous allons découvrir Java ObjectOutputStream et ses méthodes à l'aide d'exemples.

La ObjectInputStreamclasse du java.iopackage peut être utilisée pour lire des objets précédemment écrits par ObjectOutputStream.

Il étend la InputStreamclasse abstraite.

Avant d'en savoir plus sur la ObjectInputStreamclasse, assurez-vous de connaître la classe ObjectOutputStream.

Fonctionnement d'ObjectInputStream

Le ObjectInputStreamest principalement utilisé pour lire les données écrites par le ObjectOutputStream.

Fondamentalement, le ObjectOutputStreamconvertit 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 ObjectInputStreamqui 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.ObjectInputStreampackage. 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 objStreampeut être utilisé pour lire des objets à partir du fichier.

Méthodes d'ObjectInputStream

La ObjectInputStreamclasse fournit des implémentations des différentes méthodes présentes dans la InputStreamclasse.

read (), méthode

  • read() - lit un octet de données dans le flux d'entrée
  • readBoolean() - lit les données sous forme booléenne
  • readChar() - lit les données sous forme de caractères
  • readInt() - lit les données sous forme entière
  • readObject() - lit l'objet à partir du flux d'entrée

Exemple 1: Java ObjectInputStream

Voyons comment nous pouvons utiliser la ObjectInputStreamclasse pour lire les objets écrits par la ObjectOutputStreamclasse.

 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 ObjectOutputStreampour é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éé

  • ObjectOutputStreamsortie nommée à l'aide du FileOutputStreamfichier nommé
  • ObjectInputStreamentrée nommée à l'aide du FileInputStreamfileStream 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' Serializableinterface. C'est parce que le ObjectOutputStreamseul é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).

Articles intéressants...