English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Java

Contrôle de flux Java

Java Tableau

Java Orienté Objet (I)

Java Orienté Objet (II)

Java Orienté Objet (III)

Gestion des exceptions Java

Java List

Java Queue (file d'attente)

Java Map collection

Java Set collection

Java Entrée/Sortie (I/O)

Java Reader/Writer

Autres sujets Java

Classe Java ObjectOutputStream

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.

Principe de fonctionnement d'ObjectOutputStream

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.

創建一個ObjectOutputStream

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.

Méthodes d'ObjectOutputStream

La classe ObjectOutputStream fournit des implémentations pour différentes méthodes apparaissant dans la classe OutputStream.

Méthode write()

  • 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() - 將對象寫入輸出流

範例1:Java ObjectOutputStream

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從文件中讀取數據。

範例2:Java ObjectOutputStream

再舉一個實例

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.

Other methods of ObjectOutputStream

MethodContent Description
flush()Clear all data in the output stream
drain()Put all buffered data into the output stream
close()Close the output stream