Maison > Java > javaDidacticiel > le corps du texte

Comment les flux d'E/S Java gèrent-ils les objets sérialisés ?

WBOY
Libérer: 2024-04-13 13:18:01
original
990 Les gens l'ont consulté

Les flux d'E/S Java peuvent sérialiser et désérialiser des objets pour la transmission ou le stockage. Les étapes spécifiques sont les suivantes : faire en sorte que l'objet implémente l'interface Serialisable ; utiliser ObjectOutputStream pour sérialiser l'objet dans le flux de sortie ; lire les mots du flux d'entrée Throttle ; utilisez ObjectInputStream pour désérialiser un flux d'octets en un objet.

Java I/O流如何处理序列化对象?

Java I/O Streaming Objets sérialisés

Introduction
La sérialisation est le processus de conversion d'un objet en un flux d'octets afin qu'il puisse être transmis sur un réseau ou un périphérique de stockage ou de stockage. La désérialisation est le processus inverse, reconstruisant un objet à partir d'un flux d'octets. En Java, la sérialisation et la désérialisation se font via des flux d'E/S.

Sérialisation d'objets
Pour sérialiser un objet, nous devons :

  1. Faire en sorte que l'objet implémente l'interface Sérialisable.
  2. Serializable 接口。
  3. 使用 ObjectOutputStream 将对象写入到输出流中。
// 序列化一个对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.ser"));
oos.writeObject(object);
oos.close();
Copier après la connexion

反序列化对象
要反序列化一个对象,我们需要:

  1. 从输入流中读取字节流。
  2. 使用 ObjectInputStream 将字节流反序列化成对象。
// 反序列化一个对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.ser"));
Object object = ois.readObject();
ois.close();
Copier après la connexion

实战案例
让我们创建一个 Student 类,使其可序列化并演示序列化和反序列化过程:

import java.io.Serializable;

public class Student implements Serializable {
    private int id;
    private String name;

    // 构造函数和 getter/setter 略...
}

public class Main {
    public static void main(String[] args) {
        // 创建一个 Student 对象
        Student student = new Student(1, "John Doe");

        // 序列化该对象
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"))) {
            oos.writeObject(student);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 反序列化该对象
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("student.ser"))) {
            Student deserializedStudent = (Student) ois.readObject();
            System.out.println(deserializedStudent.getId() + " " + deserializedStudent.getName());
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
Copier après la connexion

运行此代码将输出:1 John DoeUtilisez ObjectOutputStream pour écrire des objets dans le flux de sortie. rrreee

🎜Désérialisation d'objets🎜🎜Pour désérialiser un objet, nous devons : 🎜🎜🎜Lire le flux d'octets à partir du flux d'entrée. 🎜Utilisez ObjectInputStream pour désérialiser le flux d'octets en un objet. rrreee🎜🎜Cas pratique🎜🎜Créons une classe Student, rendons-la sérialisable et démontrons le processus de sérialisation et de désérialisation :🎜rrreee🎜L'exécution de ce code affichera : 1 John Doe, ce qui indique que l'objet a été sérialisé et désérialisé avec succès. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal