IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Persistance des données Java Discussion :

Sérialisation d'objets dans une String


Sujet :

Persistance des données Java

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut Sérialisation d'objets dans une String
    Bonjour,

    J'ai une erreur dans le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    	public String serialize(Object obj){
     
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		ObjectOutputStream out = null;
     
    		try {
    			out = new ObjectOutputStream(baos);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		try {
    			out.writeObject(obj);
    		} catch (IOException e) {
    			e.printStackTrace();
    		} 
     
    		return new String(baos.toByteArray());
     
    	}
     
    	public Object deserialize(String str){
     
    		ObjectInputStream in = null;
     
    		ByteArrayInputStream bais = new ByteArrayInputStream(str.getBytes());
     
    		try {
    			in = new ObjectInputStream(bais);
    		} catch (IOException e) {
    			e.printStackTrace();
    		} // ligne posant problème
     
    		try {
    			return in.readObject();
    		} catch (ClassNotFoundException | IOException e) {
    			e.printStackTrace();
    		}
     
    		return null;
    	}
     
    String str = "test";
    String serial = serialize(str);
    System.out.println(serial);
    String newstr =  (String) deserialize (serial);
    System.out.println(newstr);
    L'erreur est :

    java.io.StreamCorruptedException: invalid stream header: EFBFBDEF

    Je n'ai rien trouvé de fiable sur le net pour sérializer un objet dans une string.

    Une idée ?

    Christian

  2. #2
    Membre émérite
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 355
    Points : 2 814
    Points
    2 814
    Par défaut
    Plop,

    Je pense que le problème vient du fait que tu utilises un String comme "point de passage" entre les deux méthodes. En enlevant ton encapsulation du byte[] en String, le programme fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    import java.io.*;
     
    public class Main {
     
    	public static byte[] serialize(Object obj){
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		ObjectOutputStream out = null;
    		try {
    			out = new ObjectOutputStream(baos);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		try {
    			out.writeObject(obj);
    		} catch (IOException e) {
    			e.printStackTrace();
    		} 
     
    		return baos.toByteArray();
     
    	}
     
    	public static Object deserialize(byte[] str){
     
    		ObjectInputStream in = null;
     
    		ByteArrayInputStream bais = new ByteArrayInputStream(str);
     
    		try {
    			in = new ObjectInputStream(bais);
    		} catch (IOException e) {
    			e.printStackTrace();
    		} // ligne posant problème
     
    		try {
    			return in.readObject();
    		} catch (ClassNotFoundException | IOException e) {
    			e.printStackTrace();
    		}
     
    		return null;
    	}
     
     
      public static void main(String[] a) {
      String str = "test";
      byte[] serial=serialize(str);
      System.out.println(new String(serial));
      String newstr = (String) deserialize(serial);
      System.out.println(newstr);
      }
    }

  3. #3
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut
    Merci de ton aide.

    Christian

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Suppression d'objets dans une collection
    Par master56 dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/06/2010, 21h46
  2. [PHP 5.3] Sérialiser et Désérialiser un objet dans une variable de session
    Par hervelyon dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2010, 20h26
  3. Sérialiser un objet dans une page JSP
    Par techz dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/08/2009, 20h11
  4. [DOM] sauver dans une String
    Par hocinema dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 28/09/2004, 21h44
  5. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum Débuter
    Réponses: 4
    Dernier message: 14/08/2003, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo