Maison >Java >javaDidacticiel >Comment puis-je sérialiser et désérialiser des objets Java vers et depuis des tableaux d'octets ?

Comment puis-je sérialiser et désérialiser des objets Java vers et depuis des tableaux d'octets ?

DDD
DDDoriginal
2024-12-17 18:27:11717parcourir

How Can I Serialize and Deserialize Java Objects to and from Byte Arrays?

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

En Java, l'interface sérialisable permet de convertir des objets en un flux d'octets. Cette fonctionnalité est cruciale lorsque des objets doivent être transmis sur un réseau ou stockés dans une base de données.

Encodage d'un objet dans un tableau d'octets

Pour encoder un objet dans un tableau d'octets, vous pouvez utiliser les étapes suivantes :

  1. Instancier un objet ByteArrayOutputStream.
  2. Créer un Objet ObjectOutputStream utilisant ByteArrayOutputStream comme flux de sortie.
  3. Écrivez l'objet dans ObjectOutputStream à l'aide de la méthode writeObject.
  4. Videz ObjectOutputStream pour vous assurer que toutes les données sont écrites dans ByteArrayOutputStream.
  5. Récupérez le tableau d'octets du ByteArrayOutputStream en utilisant la méthode toByteArray.

Décoder un objet à partir d'un tableau d'octets

Pour décoder un objet à partir d'un tableau d'octets, vous pouvez procéder comme suit :

  1. Instancier un objet ByteArrayInputStream en utilisant l'octet array.
  2. Créez un objet ObjectInputStream en utilisant ByteArrayInputStream comme flux d'entrée.
  3. Lisez l'objet à partir d'ObjectInputStream à l'aide de la méthode readObject.

Exemple de code

Voici les méthodes utilitaires pour la sérialisation et désérialisation :

Sérialisation :

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 :

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, vous pouvez facilement convertir objets vers et depuis des tableaux d'octets, vous permettant de transmettre des données sur des réseaux ou de les conserver dans le stockage.

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