Dans ce didacticiel, nous allons découvrir Java ObjectOutputStream et ses méthodes à l'aide d'exemples.
La ObjectOutputStream
classe du java.io
package peut être utilisée pour écrire des objets qui peuvent être lus par ObjectInputStream
.
Il étend la OutputStream
classe abstraite.
Fonctionnement d'ObjectOutputStream
Fondamentalement, le ObjectOutputStream
code 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 ObjectOutputStream
classe écrit uniquement les objets qui implémentent l' Serializable
interface. 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.ObjectOutputStream
package. 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 ObjectOutputStream
classe fournit des implémentations pour différentes méthodes présentes dans la OutputStream
classe.
write (), méthode
write()
- écrit un octet de données dans le flux de sortiewriteBoolean()
- écrit les données sous forme booléennewriteChar()
- écrit les données sous forme de caractèreswriteInt()
- écrit les données sous forme entièrewriteObject()
- écrit l'objet dans le flux de sortie
Exemple 1: Java ObjectOutputStream
Voyons comment nous pouvons utiliser ObjectOutputStream
pour stocker des objets dans un fichier et ObjectInputStream
pour 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 ObjectOutputStream
pour é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éé
ObjectOutputStream
nommé objOut en utilisant leFileOutputStream
nommé fileOutObjectInputStream
nommé objIn en utilisant leFileInputStream
nommé 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' Serializable
interface. C'est parce que les ObjectOutputStream
seuls 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).