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

Entrée/Sortie Java Discussion :

Sérialiser un tableau à 2 dimensions


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Par défaut Sérialiser un tableau à 2 dimensions
    Bonjour à tous,

    Je voudrais savoir si il est possible de sérialiser un tableau à 2 dimensions contenant des objets de type autres que ceux de Java (String, Integer, ...) car j'ai essayer mais ça ne marche pas.

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Par défaut Sérialiser un tableau à 2 dimensions
    Bonjour à tous,

    Je voudrais savoir si il est possible de sérialiser un tableau à 2 dimensions contenant des objets de type autres que ceux de Java (String, Integer, ...) car j'ai essayer mais ça ne marche pas.
    Pour la sérialisation du tableau dans un fichier je ne rencontre aucune erreur mais lors de la désérialisation j'ai une erreur ArrayIndexOutOfBoundsException car en fait le tableau n'a pas été sérialisé finalement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import java.io.Serializable;
     
    public class Personne implements Serializable {
    	...
    }
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
     
    public class Serial {
     
    	static Personne[][] tableau;
     
    	Serial(){
    		...
    	}
     
    	/**
             * Sauvegarde le tableau sous forme sérialisée dans le fichier serial.
             */
    	static void serialiser(){
    		try {
    			FileOutputStream fichier = new FileOutputStream("serial");
     
    			try {
    				ObjectOutputStream oos = new ObjectOutputStream(fichier);
     
    				try {
    					oos.writeObject(tableau);
    					oos.flush();
    				}
    				finally {
    					oos.close();
    				}
    			}
    			finally {
    				fichier.close();
    			}
    		}
    		catch (IOException e){
    			e.printStackTrace();
    		}
    	}
     
    	/**
             * Désérialise le tableau sérialisé dans le fichier serial.
             */
    	void deserialiser(){
    		try {
    			FileInputStream fichier = new FileInputStream("serial");
     
    			try {
    				ObjectInputStream ois = new ObjectInputStream(fichier);
     
    				try	{
    					tableau = (Personne[][])ois.readObject();
    				}
    				finally {
    					ois.close();
    				}
    			}
    			finally {
    				fichier.close();
    			}
    		} 
    		catch (IOException ioe){
    			ioe.printStackTrace();
    		}
    		catch (ClassNotFoundException cnfe){
    			cnfe.printStackTrace();
    		}
    	}
    }
    Merci

  3. #3
    Membre expérimenté Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut
    Bonjour,

    J'ai fait un test simple, ton code à l'air de marcher. Est ce normal que la méthode deserialiser ne soit pas static ? Peux tu nous monter le code qui utilise les méthodes serialiser et deserialiser.

    A+
    Hydraland

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Par défaut
    Merci de vos réponses gifffftane et hydraland.
    Oui c'est normal que la méthode deserialiser ne soit pas static.
    Effectivement je viens de faire un test rapide et mon code marche.
    J'ai une erreur lors de la contruction de mon tableau.

    Merci encore

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Par défaut
    J'avais oublié de dire que j'avais quand même une erreur pour la désérialisation qui venait du fait que je n'avais pas mis une serialVersionUID ( ex: static private final long serialVersionUID = 6L) dans la classe Personne qui n'est normalement pas obligatoire parce que le mécanisme de sérialisation Java en calcule un par défaut.

    Voilà

  6. #6
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Pour info voilà un petit lien vers la FAQ qui explique le problème au cas où d'autres personnes se posent des questions sur le serialVersionUID.

    serialVersionUID

  7. #7
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Un tableau est en lui même sérializable, quelle que soit sa dimension.

    Mais, comme pour tout objet sérializable, il faut que ses composantes le soient aussi ; il faut donc que tous les éléments du tableau soient aussi sérialisables.

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

Discussions similaires

  1. Sérialiser un tableau à 2 dimensions
    Par Cocar dans le forum C#
    Réponses: 6
    Dernier message: 29/09/2010, 15h49
  2. [tableau à 2 dimensions] association String et float
    Par LoLoSS dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/07/2004, 11h53
  3. Tableau à n dimensions
    Par youb dans le forum MFC
    Réponses: 10
    Dernier message: 13/05/2004, 15h13
  4. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 15h50
  5. Réponses: 23
    Dernier message: 21/08/2003, 08h16

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