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

avec Java Discussion :

dé/sérialisation pour débutant


Sujet :

avec Java

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut dé/sérialisation pour débutant
    Bonjour,

    Si je crée un Vector<Point>, est-il possible de le dé/sérialiser en une fois ou bien faut-il dé/sérialiser chacun des objets point qu'il contient un par un ?

    merci, je ne sais pas vérifier par moi même.

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Le meilleur moyen c'est d'essayer, pour comprendre comment ca marche !

    Tu sérialises dans un fichier ton vector et tu regardes le résultat.

    Mais pour répondre à la question, lorsque tu vas sérialiser ton vector, il va écrire la définition de la classe, celle des valeurs, les variables de vector et les variables de Point dans un seul bloc.

    Conclusion lorsque tu va dé-sérialiser ton vector il va tout chargé en une fois.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    La classe Vector est Serializable, donc il doit être possible de la serialiser (et par conséquent son contenu).
    A noter que la classe Point doit aussi être Serializable.

    Edit : trop tard

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut excellente théorie !
    Effectivement, le mieux, c'est d'essayer mais je ne sais pas vraiment...commencer, alors je n'ose vous le demander : serait-il possible d'avoir un exemple (très scolaire) de code ?

    c'est pas de la lâcheté, j'ai fait des recherches pires que celle-là, mais ici, je plante!!!

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    Un exemple avec des String à la place des Point (si Point implémente Serializable c'est strictement pareil).
    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
          Vector<String> v = new Vector<String>();
          v.add("azerty");
          v.add("qsdfgh");
          v.add("wxcvbn");
          // Serialisation
          try {
             FileOutputStream fichier = new FileOutputStream("test.ser");
             ObjectOutputStream oos = new ObjectOutputStream(fichier);
             oos.writeObject(v);
             fichier.close();
             oos.close();
          } catch(FileNotFoundException e) {
             e.printStackTrace();
          } catch(IOException e) {
             e.printStackTrace();
          }
     
          // Deserialisation
          try {
             FileInputStream fichierIn = new FileInputStream("test.ser");
             ObjectInputStream ois = new ObjectInputStream(fichierIn);
             Vector<String> vDeser = (Vector<String>) ois.readObject();
     
     
             fichierIn.close();
             ois.close();
     
             System.out.println(vDeser);
          } catch(FileNotFoundException e) {
             e.printStackTrace();
          } catch(IOException e) {
             e.printStackTrace();
          } catch(ClassNotFoundException e) {
             e.printStackTrace();
          }

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut est-ce grave?
    merci gailuris pour ton exemple de code , j'ai fait un petit prgramme de test
    et à la compilation j'ai :
    Note :serie2.java (nom du programme) uses unsafe or unchecked operations
    Note : recompile with -Xlint:unchecked for details
    (je comprend l'anglais) mais est-ce due à mon implémentation, voici mon programme :
    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
    import java.io.*;
    import java.util.*;
    class Serie2
    {
    public static void main(String argv[]) {
     
    Vector<String> v = new Vector<String>();
          v.add("azerty");
          v.add("qsdfgh");
          v.add("wxcvbn");
          // Serialisation
          try {
             FileOutputStream fichier = new FileOutputStream("test.ser");
             ObjectOutputStream oos = new ObjectOutputStream(fichier);
             oos.writeObject(v);
             fichier.close();
             oos.close();
          } catch(FileNotFoundException e) {
             e.printStackTrace();
          } catch(IOException e) {
             e.printStackTrace();
          }
     
          // Deserialisation
          try {
             FileInputStream fichierIn = new FileInputStream("test.ser");
             ObjectInputStream ois = new ObjectInputStream(fichierIn);
             Vector<String> vDeser = (Vector<String>) ois.readObject();
     
     
             fichierIn.close();
             ois.close();
     
             System.out.println(vDeser);
          } catch(FileNotFoundException e) {
             e.printStackTrace();
          } catch(IOException e) {
             e.printStackTrace();
          } catch(ClassNotFoundException e) {
             e.printStackTrace();
          }
    }
    }
    merci pour ta patience

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    C'est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<String> vDeser = (Vector<String>) ois.readObject();
    qui provoque cet avertissement, le compilateur ne peut pas savoir au moment où il compile que readObject renvoi un Vector de String. Lis un peu à propos des Generics si tu veux mieux comprendre ce warning.
    Ce n'est donc pas du à ton implémentation (j'ai le même warning).

    Pour ne plus avoir ce warnig tu peux ajouter un suppressWarnings juste avant la déclaration de la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @SuppressWarnings("unchecked")
    public static void main(String argv[]) {
    ...

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut Merci pour cette aide
    merci beaucoup, en fait, je prépare un concours, je suis nouveau en java et c'est le langage que "paradoxalement", j'ai choisi, mais je vais réussir à m'y retrouver.

  9. #9
    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
    Pensez à regarder dans les les cours et tutoriels Java voici un tutoriel sur La sérialisation binaire en Java

    Pensez également à toujours fermer vos flux dans des blocs finally .
    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. Port comm pour débutant
    Par carotreger dans le forum Débuter
    Réponses: 11
    Dernier message: 03/11/2005, 00h19
  2. Réponses: 2
    Dernier message: 17/10/2005, 22h16
  3. aide petit programme pour débutant
    Par kartp0rqx dans le forum C
    Réponses: 16
    Dernier message: 14/10/2005, 19h31
  4. Aide pour débutant : addition
    Par playentry dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/03/2005, 19h08

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