English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans ce tutoriel, nous allons apprendre Java ObjectOutputStream et ses méthodes à l'aide d'exemples.
La classe ObjectOutputStream du paquet java.io peut être utilisée pour écrire des objets qui peuvent être lus par ObjectInputStream.
Il hérite de la classe abstraite OutputStream.
En principe, ObjectOutputStream utilise le nom de la classe et la valeur de l'objet pour encoder les objets Java. Et, par conséquent, génère les flux correspondants. Ce processus s'appelle la sérialisation.
Ces flux convertis peuvent être stockés dans des fichiers et peuvent être transmis entre les réseaux.
Note:La classe ObjectOutputStream écrit uniquement les objets qui implémentent l'interface Serializable. C'est parce que les objets doivent être sérialisés lors de l'écriture dans le flux.
Pour créer un flux de sortie d'objet, nous devons d'abord importer le paquet java.io.ObjectOutputStream. Après avoir importé le paquet, vous pouvez créer un flux de sortie.
//Créer un FileOutputStream, où l'objet est écrit dans ObjectOutputStream FileOutputStream fileStream = new FileOutputStream(String file); //Créer ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
Dans l'exemple ci-dessus, nous avons créé un flux de sortie d'objets nommé objStream, lié au flux de sortie de fichier nommé fileStream.
La classe ObjectOutputStream fournit des implémentations pour différentes méthodes apparaissant dans la classe OutputStream.
write() - Écrire des données en octets dans le flux de sortie
writeBoolean() - Écrire des données sous forme de booléen
writeChar() - Écrire des données sous forme de caractère
writeInt() - Écrire des données sous forme d'entier
writeObject() - 將對象寫入輸出流
Voyons comment utiliser ObjectOutputStream pour stocker des objets dans un fichier et comment utiliser ObjectInputStream pour lire ces objets à partir du fichier
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 w3codebox; try { FileOutputStream file = new FileOutputStream("file.txt"); //創建一個ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); //將對象寫入輸出流 output.writeInt(data1; output.writeObject(data2; //Lecture de données à l'aide d'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(); } } }
Output Result
Integer data: 5 String data: This is w3codebox
Dans l'exemple ci-dessus, nous avons utilisé les méthodes readInt() et readObject() pour lire des données entières et des données d'objets à partir de fichiers.
在此處,我們使用ObjectOutputStream將數據寫入文件。然後使用ObjectInputStream從文件中讀取數據。
再舉一個實例
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) { //創建一個Dog類的對象 Dog dog1 = new Dog("泰里", "拉布拉多獵犬"); try { FileOutputStream fileOut = new FileOutputStream("file.txt"); //創建一個ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); //將對象寫入輸出流 objOut.writeObject(dog1; //讀取對象 FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // 讀取對象 Dog newDog = (Dog) objIn.readObject(); System.out.println("狗名: "); + newDog.name); System.out.println("犬種: "); + newDog.breed); objOut.close(); objIn.close(); } catch (Exception e) { e.getStackTrace(); } } }
Output Result
Dog name: Tery Dog breed: Labrador Retriever
In the above example, we created
The ObjectOutputStream named objOut uses the FileOutputStrea named fileOut.
The ObjectInputStream named objIn uses the FileInputStream named fileIn.
The object of the Dog class dog1.
Here, we then use the object output stream to write objects to the file. And, the object input stream reads objects from the file.
Note:The Dog class implements the Serializable interface. This is because ObjectOutputStream only writes objects that can be serialized to the output stream.
Method | Content Description |
---|---|
flush() | Clear all data in the output stream |
drain() | Put all buffered data into the output stream |
close() | Close the output stream |