Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques

Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques

La classe ObjectOutputStream du package java.io permet d'écrire des objets Java pour qu'ils puissent être relus plus tard par ObjectInputStream. Elle étend OutputStream et constitue la colonne vertébrale du mécanisme de sérialisation intégré de Java.


Comment fonctionne ObjectOutputStream

Lorsqu'on écrit un objet dans un ObjectOutputStream, le framework encode le nom de la classe, les valeurs des champs et les informations de type dans un format binaire — un processus appelé sérialisation. Le flux d'octets résultant peut être stocké dans un fichier, transmis sur un réseau, ou même embarqué en mémoire.

Important : Seuls les objets implémentant java.io.Serializable peuvent être sérialisés. Cette interface agit comme un marqueur indiquant au runtime qu'un objet peut être persisté ou transmis.


Création d'un ObjectOutputStream

Importez la classe :

import java.io.ObjectOutputStream;

Puis liez-la à un FileOutputStream ou tout autre OutputStream sous-jacent :

// Écriture dans un fichier "donnees.bin"
FileOutputStream fluxFichier = new FileOutputStream("donnees.bin");
ObjectOutputStream fluxObjets = new ObjectOutputStream(fluxFichier);

fluxObjets est maintenant prêt à sérialiser des objets dans fluxFichier.


Méthodes principales d'ObjectOutputStream

La classe hérite des méthodes de OutputStream et ajoute des méthodes spécialisées :


Exemple 1 : Sérialisation de primitives et de chaînes

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int donnee1 = 5;
        String donnee2 = "Ceci est programiz";
        try {
            // Écriture des objets
            FileOutputStream fos = new FileOutputStream("fichier.bin");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeInt(donnee1);
            oos.writeObject(donnee2);
            oos.close();

            // Lecture des objets
            FileInputStream fis = new FileInputStream("fichier.bin");
            ObjectInputStream ois = new ObjectInputStream(fis);
            System.out.println("Donnée entière : " + ois.readInt());
            System.out.println("Donnée chaîne : " + ois.readObject());
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Sortie

Donnée entière : 5
Donnée chaîne : Ceci est programiz

Exemple 2 : Sérialisation d'un objet personnalisé

Pour sérialiser une classe utilisateur, implémentez simplement Serializable :

import java.io.*;

class Chien implements Serializable {
    String nom;
    String race;
    Chien(String nom, String race) {
        this.nom = nom;
        this.race = race;
    }
}

public class Main {
    public static void main(String[] args) {
        Chien chien1 = new Chien("Tyson", "Labrador");
        try {
            // Écriture de l'objet
            FileOutputStream fos = new FileOutputStream("chien.bin");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(chien1);
            oos.close();

            // Lecture de l'objet
            FileInputStream fis = new FileInputStream("chien.bin");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Chien nouveauChien = (Chien) ois.readObject();
            System.out.println("Nom du chien : " + nouveauChien.nom);
            System.out.println("Race du chien : " + nouveauChien.race);
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Sortie

Nom du chien : Tyson
Race du chien : Labrador

La classe Chien doit implémenter Serializable car ObjectOutputStream ne peut écrire que des objets sérialisables.


Opérations supplémentaires d'ObjectOutputStream

MéthodeDescription
flush()Vide les octets en tampon vers le flux sous-jacent
drain()Vide les données en tampon (disponible Java 9+)
close()Ferme le flux et libère les ressources système

Pour approfondir, consultez la documentation officielle Java.

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Maîtriser l'héritage Java : concepts, types et exemples pratiques
  4. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  5. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  6. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  7. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  8. Maîtriser les génériques Java : Construire du code réutilisable et type-safe
  9. Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression