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 :

comment sérializer Arraylist


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut comment sérializer Arraylist
    Bonjour,
    Je débute dans la sérialization et je voudrais sérialiser une ArrayList .
    par exemple une classe classe1 qui va produire une liste A=[a,b,c] et utiliser cette liste dans une autre classe classe2
    liste C= A

  2. #2
    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
    En regardant les tutoriels disponibles avant de poster tu gagnerais du temps La sérialisation binaire en Java.
    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

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    bonsoir voila j'ai lu le tutorial et j'ai essayé de créer un petit exempel mais ça fonctionne pas
    j'ai deux classe C et D
    la classe C contient une valeur float C=9; j'ai sérailizer cette valeur dans un fichier window.se
    et je veux la récuperer dans la classe D
    voila le code
    classe D contient la valeur 9
    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
     
    package mustapha;
     
    import java.io.*;
     
     
    public class D {
      public D() {
      }
        public static void main(String[] args) {
      try {
     
     
     
      float C=9;
        FileOutputStream fos = new FileOutputStream("window.se");
                          ObjectOutputStream oos = new ObjectOutputStream(fos);
                          oos.writeFloat(C);
                          oos.flush();
     
                          oos.close();
     
     
                      System.out.println("Donnée sauvée: " +C);
      }
      catch (java.io.IOException e) {
     
                    }
     
     
     
        }
     
      }
    et je cherche à récuperer la valeur dans la classe C
    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
     
    package mustapha;
     
    import java.io.*;
     
     
    public class C {
      public C() {
      }
        public static void main(String[] args) {
     
          try {
         FileInputStream f = new FileInputStream("window.se");
                       ObjectInputStream  o =  new ObjectInputStream(f);
                      float g = o.readFloat();
                      o.close();
                      System.out.println("Donnée actuelle : " + g);  
     
     
          }
     
     
         catch(IOException o) {
    o.printStackTrace();
                     }
     
     
        }
     
      }
    voila l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.io.FileNotFoundException: window.se (Le fichier spécifié est introuvable)
    	at java.io.FileInputStream.open(Native Method)
    j'espere avoir une réponse merci

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    j'ai modifié le code par
    FileInputStream f = new FileInputStream("c:\\time.txt");

    et

    FileInputStream f = new FileInputStream("c:\\time.txt");


    voila l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    java.io.EOFException
    	at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2165)
    	at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2631)
    	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
    	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
    	at mustapha.C.main(C.java:15)
    sur la ligne ObjectInputStream o = new ObjectInputStream(f);
    meme fichier time ne contient rien

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    pour sérialiser il me semble que ta classe doit implémenter java.io.Serializable (suffit d'ajouter implements java.io.serializable dans le cas présent)

  6. #6
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 230
    Par défaut
    quand une classe doit etre ecrite oui ... quand elle se contente de lire ou d'ecrire d'autre type de donnee par forcement

    genre si je fais new ObjectOutputStream(new FileOutputStream("out.ser").write(instancedemaclasse); et que instancedemaclasse n'implements pas Serializable a l'execution ca va faire drole lol



    EDIT pour ulysse :

    heu tu veux lire des float ou tu veux serialiser un arraylist ...?
    car bon a lire un float dans un fichier j'utiliserais Scanner qui est moins penible a utiliser

  7. #7
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    La méthode "readObject" de la classe "FileInputStream" renvoyant un Object (et non une ArrayList) il faut la caster.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    B = (ArrayList) o.readObject();

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/09/2011, 16h16
  2. Comment faire ArrayList<String> = String[] ?
    Par Sylk dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 05/06/2008, 20h41
  3. Réponses: 9
    Dernier message: 28/05/2008, 02h06
  4. Réponses: 12
    Dernier message: 19/12/2005, 18h12
  5. [C#] Comment créer un byte[] d'un ArrayList ?
    Par Royd938 dans le forum C#
    Réponses: 5
    Dernier message: 26/09/2005, 16h20

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