Java ObjectOutputStream (avec des exemples)

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

La ObjectOutputStreamclasse du java.iopackage peut être utilisée pour écrire des objets qui peuvent être lus par ObjectInputStream.

Il étend la OutputStreamclasse abstraite.

Fonctionnement d'ObjectOutputStream

Fondamentalement, le ObjectOutputStreamcode les objets Java à l'aide du nom de classe et des valeurs d'objet. Et, par conséquent, génère des flux correspondants. Ce processus est appelé sérialisation.

Ces flux convertis peuvent être stockés dans des fichiers et peuvent être transférés entre les réseaux.

Remarque : la ObjectOutputStreamclasse écrit uniquement les objets qui implémentent l' Serializableinterface. En effet, les objets doivent être sérialisés lors de l'écriture dans le flux

Créer un ObjectOutputStream

Afin de créer un flux de sortie d'objet, nous devons d'abord importer le java.io.ObjectOutputStreampackage. Une fois que nous importons le package, voici comment créer un flux de sortie.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

Dans l'exemple ci-dessus, nous avons créé un flux de sortie d'objet nommé objStream qui est lié au flux de sortie de fichier nommé fileStream.

Méthodes d'ObjectOutputStream

La ObjectOutputStreamclasse fournit des implémentations pour différentes méthodes présentes dans la OutputStreamclasse.

write (), méthode

  • write() - écrit un octet de données dans le flux de sortie
  • writeBoolean() - écrit les données sous forme booléenne
  • writeChar() - écrit les données sous forme de caractères
  • writeInt() - écrit les données sous forme entière
  • writeObject() - écrit l'objet dans le flux de sortie

Exemple 1: Java ObjectOutputStream

Voyons comment nous pouvons utiliser ObjectOutputStreampour stocker des objets dans un fichier et ObjectInputStreampour lire ces objets à partir des fichiers

 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(); ) ) ) 

Production

 Données entières: 5 Données de chaîne: Ceci est programiz 

Dans l'exemple ci-dessus, nous avons utilisé la readInt()méthode et la readObject()méthode pour lire des données entières et des données d'objet à partir des fichiers.

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 ObjectOutputStream

Prenons un autre exemple,

 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(); ) ) ) 

Production

 Nom du chien: Tyson Race de chien: Labrador 

Dans l'exemple ci-dessus, nous avons créé

  • ObjectOutputStreamnommé objOut en utilisant le FileOutputStreamnommé fileOut
  • ObjectInputStreamnommé objIn en utilisant le FileInputStreamnommé fileIn.
  • Un objet dog1 de la classe Dog.

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 les ObjectOutputStreamseuls objets d'écriture qui peuvent être sérialisés dans le flux de sortie.

Autres méthodes d'ObjectOutputStream

Méthodes Descriptions
flush() efface toutes les données du flux de sortie
drain() met toutes les données tamponnées dans le flux de sortie
close() ferme le flux de sortie

Pour en savoir plus, visitez Java ObjectOutputStream (documentation Java officielle).

Articles intéressants...