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

Tutoriel de base Java

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Gestion des exceptions Java

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java ObjectInputStream 类

在本教程中,我们将借助示例学习Java ObjectOutputStream及其方法。

java.io包的ObjectInputStream类可用于读取ObjectOutputStream先前编写的对象。

它进行了InputStream抽象类。

在学习ObjectInputStream类之前,请确保您了解ObjectOutputStream类.

ObjectInputStream的工作原理

ObjectInputStream主要用于读取ObjectOutputStream写入的数据。

基本上,ObjectOutputStream将Java对象转换为相应的流。这称为序列化。这些转换后的流可以存储在文件中,也可以通过网络传输。

现在,如果需要读取这些对象,则将使用ObjectInputStream,它将流转换回相应的对象。这称为反序列化。

Créer un ObjectInputStream

为了创建对象输入流,我们必须首先导入java.io.ObjectInputStream包。导入包后,就可以创建输入流。

//创建与指定文件链接的文件输入流
FileInputStream fileStream = new FileInputStream(String file);
//Création d'un flux d'entrée d'objets à partir d'un flux d'entrée de fichier
ObjectInputStream objStream = new ObjectInputStream(fileStream);

Dans l'exemple ci-dessus, nous avons créé un flux d'entrée d'objets nommé objStream, lié au flux d'entrée de fichier nommé fileStream.

Maintenant, objStream peut être utilisé pour lire des objets à partir du fichier.

Méthodes de ObjectInputStream

La classe ObjectInputStream fournit des implémentations de différentes méthodes présentes dans la classe InputStream.

Méthode read()

  • read() - Lecture d'un octet de données à partir du flux d'entrée

  • readBoolean() - Lecture des données sous forme de booléen

  • readChar() - Lecture des données sous forme de caractères

  • readInt() - Lecture des données sous forme d'entier

  • readObject() - Lecture d'objets à partir du flux d'entrée

Exemple1:Java ObjectInputStream

Voyons comment utiliser la classe ObjectInputStream pour lire des objets créés par la classe ObjectOutputStream.

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 output = new ObjectOutputStream(file);
            //Utilisation d'ObjectOutputStream pour écrire dans le fichier
            output.writeInt(data1;
            output.writeObject(data2;
            FileInputStream fileStream = new FileInputStream("file.txt");
            //Création d'un flux d'entrée d'objets
            ObjectInputStream objStream = new ObjectInputStream(fileStream);
            //Utilisation de la méthode readInt()
            System.out.println("Données d'entiers : ", + objStream.readInt());
            //Utilisation de la méthode readObject()
            System.out.println("Données de chaîne : ", + objStream.readObject());
            output.close();
            objStream.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

Résultat de la sortie

Données d'entiers : 5
Données de chaîne : This is w3codebox

Dans l'exemple ci-dessus, nous avons utilisé les méthodes readInt() et readObject() pour lire des données d'entiers et des données d'objets à partir du fichier.

Ici, nous utilisons ObjectOutputStream pour écrire des données dans le fichier. Ensuite, nous utilisons ObjectInputStream pour lire des données à partir du fichier.

Exemple2:Java ObjectInputStream

Laissons voir 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) {
        //Créer un objet de la classe Dog
        Dog dog = new Dog("Tyson", "Labrador");
        try {
            FileOutputStream file = new FileOutputStream("file.txt");
            //Créer un ObjectOutputStream
            ObjectOutputStream output = new ObjectOutputStream(file);
            //Écrire l'objet dans le flux de sortie
            output.writeObject(dog);
            FileInputStream fileStream = new FileInputStream("file.txt");
            //Créer un ObjectInputStream
            ObjectInputStream input = new ObjectInputStream(fileStream);
            //Lecture d'objet
            Dog newDog = (Dog) input.readObject();
            System.out.println("Nom du chien: " + newDog.name);
            System.out.println("Race canine: " + newDog.breed);
            output.close();
            input.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

Résultat de la sortie

Nom du chien: Tyson
Race canine: Labrador

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

  •  ObjectOutputStream uses a FileOutputStream named file

  •  ObjectInputStream uses a FileInputStream named fileStream

  • The object of the Dog class dog

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 serializable objects to the output stream.

Other methods of ObjectInputStream

MethodContent description
available()Return the number of available bytes in the input stream
mark()Mark the position of the data read from the input stream
reset()Return the control to the point in the input stream where the mark was set
skipBytes()Skip and discard the specified bytes from the input stream
close()Close the object input stream