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

Collection et Stream Java Discussion :

Serialisation/deserialisation d'un arrayList retourne des objets vides


Sujet :

Collection et Stream Java

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    99
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Par d�faut Serialisation/deserialisation d'un arrayList retourne des objets vides
    bonjour,

    j'utilise la serialisation pour sauvegarder mes donn�es, notament je serialize un arraylist comme ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ArrayList<FishObject> objects = null;
    ... affectation de objects ...
    FileOutputStream fos = new FileOutputStream("monfichier");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(objects);
    oos.flush();
    oos.close();
    FishObject est bien serialisable :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    public class FishObject extends Object3D implements Comparable<FishObject>, Serializable{
    et sauf erreur de ma part, apres un bon paquet de debug mon arrayList objects contient bien des donn�es avant d'�tre s�rialis�

    Quand je recharche tout ca
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    fis = new FileInputStream("monfichier");
    ois = new ObjectInputStream(fis);
    objects = (ArrayList<FishObject>) ois.readObject();
    ois.close();
    mon arrayList objects est plein d'objets vides (attributs aux valeurs par d�faut), il semble quand bien que le nombre d'objets est bon au moins
    Alors l� je vois pas ...
    help

  2. #2
    Membre �prouv�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par d�faut
    Et si on jetait un coup d'oeil dans le fichier?

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    99
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Par d�faut
    B� oui !
    mais j'ai du mal a lire le binaire ... comment faire ?
    fichier joint (nucleus.ser dans une archive zip)

    Merci
    Fichiers attach�s Fichiers attach�s

  4. #4
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    Citation Envoy� par cdtkoenig
    mon arrayList objects est plein d'objets vides (attributs aux valeurs par d�faut)
    Est ce que ces attributs sont h�rit�s de la classe Object3D ? Si oui, celle ci est-elle bien Serializable ?
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    99
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Par d�faut
    Bingo
    Object3D n'etait pas marqu� comme serialisable et avait un attribut de type Pixel3D qui ne l'etait pas non plus.
    Je profite pour poser une aute question sur la serialisation :
    n'est-il pas risqu� de stocker des donn�es via la serialisation car si j'ai bien compris, si j'ajoute un attribut � ma classe dans 3 mois, mon appli ne pourra plus charger les fichiers de la version n-1 ?
    Comment faire autrement sans passer trop de temps � coder tout ca ?

    Merci

  6. #6
    R�dacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Directeur technique
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par d�faut
    Tu peux tenter la s�rialisation XML.

    Les sauvegardes sont plus faciles � modifier "� la main", et sont compr�hensibles quand on les ouvre avec un �diteur de texte, ce qui n'est pas le cas d'un fichier binaire
    Elles passent mieux d'une version de ton programme � la suivante qui a un attribut en plus (enfin... tout d�pend de la mani�re dont tu codes ta s�rialisation)

    Par contre, les fichiers ainsi cr��s sont plus gros. Et si tu parses tes fichiers avec Dom, cela peut poser des probl�mes si tes sauvegardes sont trop volumineuses
    Avant de poster, pensez � regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et � faire une recherche
    Je ne r�ponds pas aux questions techniques par MP: les forums sont faits pour �a
    Mes articles et tutoriaux & Mon blog informatique

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    99
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Par d�faut
    Merci pour ta r�ponse, que me conseilles-tu pour attaquer la serialisation XML (une lib, un tuto, ...) ?
    Sinon, j'ai lu sur http://www.mactech.com/articles/mact...ion/index.html
    que certaines modif n'empechaient pas de relire des objets s�rialis�s de version pr�c�dentes : notament l'ajout d'attribut ne semble pas poser de probl�me car java utilise la valeur par d�faut des nouveaux attributs dans ce cas (en gardant le SUID compatible). Ca me rassure mais je reste circonspect sur le binaire, interress� par le xml et globalement assez faineant alors ....

    Merci

  8. #8
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    Pour la s�rialisation XML l'API XStream est plut�t sympa (efficace et pas compliqu�e) .
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  9. #9
    Membre exp�riment�
    Inscrit en
    Mai 2007
    Messages
    335
    D�tails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par d�faut Info sur la s�rialisation
    Pour d�courvrir les secrets de la s�rialisation :
    http://java.sun.com/developer/techni...serialization/

    en gros, l'atribut SerialUID permet � ta classe d'�tre accept�e � tous les coups par le ObjectStream, mais tu prend le risque d'avoir un r�sultat incoh�rent, alors dans ce cas il vaut mieux red�finir ta propre s�rilization:
    1. soit en surchargeant les m�thodes:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    180   private void writeObject(ObjectOutputStream out) throws IOException
    190   {
    200     out.defaultWriteObject();
    220   }
    230   private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
    240   {
    250     // our "pseudo-constructor"
    260     in.defaultReadObject();
    270     // now we are a "live" object again, so let's run rebuild and start
    280     // autre traitement à toi
    290
    300   }
    2. soit en impl�mentant "Externalizable" ce qui te rend s�rializable et te permet de cr�er ton propre m�canisme de s�ralisation.

    Arp�s, il faut bien g�rer tes version: ajouter un N� de version d'enregistrement dans ta classe (je ne pense pas qu'on puisse utiliser directement le SerialUID, risque de plantage) , et avoir un bloc pour d�s�rialiser chaque version pour maintenir la compatibilit� ascendante.

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    99
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Par d�faut
    Vraiment sympa Xstream, et simple � utiliser, par contre, ca multiplie les volumes par 5 (200 ko vs 1Mo) et pareil pour le temps de rechargement des objets en ram. Du coup, je continue a � me tater ...
    En tout cas, j'ai les r�ponses � mes questions !

  11. #11
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    Sinon voici un tutoriel sur la s�rialisation binaire en Java qui pourrait t'int�resser.
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [PHP 4] Formulaire d'envoi toujours retourne des valeurs vides..
    Par linusminus dans le forum Langage
    R�ponses: 1
    Dernier message: 04/08/2014, 11h00
  2. SQL Server retourne des champs vides
    Par Ferllings dans le forum MS SQL Server
    R�ponses: 3
    Dernier message: 08/02/2011, 14h16
  3. [PDO] Query retourne des champs vides
    Par ToonToon1 dans le forum PHP & Base de donn�es
    R�ponses: 4
    Dernier message: 06/01/2011, 16h25
  4. [Probl�mes avec ArrayList] Supprimer des objets �gaux � null
    Par smutmutant2003 dans le forum Collection et Stream
    R�ponses: 5
    Dernier message: 08/10/2009, 10h43
  5. Intercepter des objets "vides".
    Par CRUSOE13 dans le forum Access
    R�ponses: 9
    Dernier message: 27/06/2005, 00h08

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