Maison > Java > javaDidacticiel > Comment convertir des objets sérialisables Java en tableaux d'octets et inversement ?

Comment convertir des objets sérialisables Java en tableaux d'octets et inversement ?

Susan Sarandon
Libérer: 2025-01-03 04:52:39
original
908 Les gens l'ont consulté

How to Convert Java Serializable Objects to Byte Arrays and Back?

Conversion d'objets Java sérialisables en tableaux d'octets

Dans les situations où vous devez transmettre des objets Java sur un réseau ou les stocker dans un format binaire, les convertir en tableaux d'octets peut être essentiel. Considérons un scénario dans lequel nous avons une classe sérialisable AppMessage. Pour envoyer des instances AppMessage via des sockets vers une autre machine et les reconstruire à partir des octets reçus, nous pouvons suivre ces étapes :

Sérialisation : conversion d'un objet en un tableau d'octets

  1. Préparez le ByteArrayOutputStream : Créez un ByteArrayOutputStream pour servir de stockage temporaire pour le sérialisé object.
  2. ObjectOutputStream : Utilisez un ObjectOutputStream pour écrire l'objet dans le ByteArrayOutputStream.
  3. Flush and Read Bytes : Videz l'ObjectOutputStream pour garantir que tous les données sont écrites dans le tampon d'octets et récupèrent le tableau d'octets de ByteArrayOutputStream.

L'extrait de code de ce processus :

static byte[] serialize(final Object obj) {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    try (ObjectOutputStream out = new ObjectOutputStream(bos)) {
        out.writeObject(obj);
        out.flush();
        return bos.toByteArray();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
Copier après la connexion

Désérialisation : reconstruire un objet à partir d'un tableau d'octets

  1. Créer un ByteArrayInputStream : Reconvertissez le tableau d'octets en un flux d'entrée utilisant ByteArrayInputStream.
  2. ObjectInputStream : Créez un ObjectInputStream à partir de ByteArrayInputStream pour lire les données de l'objet.
  3. readObject() : Utilisez readObject () méthode pour reconstruire l'objet original à partir de l'octet stream.

L'extrait de code correspondant :

static Object deserialize(byte[] bytes) {
    ByteArrayInputStream bis = new ByteArrayInputStream(bytes);

    try (ObjectInput in = new ObjectInputStream(bis)) {
        return in.readObject();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
Copier après la connexion

Avec ces méthodes en place, vous pouvez envoyer efficacement des objets sérialisables, tels que des instances AppMessage, sur les réseaux et les reconstruire sur le fin de réception.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal