English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本教程中,我们将借助示例学习Java ObjectOutputStream及其方法。
java.io包的ObjectInputStream类可用于读取ObjectOutputStream先前编写的对象。
它进行了InputStream抽象类。
在学习ObjectInputStream类之前,请确保您了解ObjectOutputStream类.
ObjectInputStream主要用于读取ObjectOutputStream写入的数据。
基本上,ObjectOutputStream将Java对象转换为相应的流。这称为序列化。这些转换后的流可以存储在文件中,也可以通过网络传输。
现在,如果需要读取这些对象,则将使用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.
La classe ObjectInputStream fournit des implémentations de différentes méthodes présentes dans la classe InputStream.
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
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.
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.
Method | Content 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 |