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
Susan Sarandonoriginal
2025-01-03 04:52:39942parcourir

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);
    }
}

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);
    }
}

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!

Déclaration:
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