Aller au contenu

Sérialisation d'une ArrayList<>


Cuillère

Recommended Posts

Bonjour à tous. J'ai un petit problème pour sérialiser mon arrayList et pour la récupérer.

Mon code :

public static void serialiser(ArrayList alp, String path)
   {

        ObjectOutputStream serialise;
       try {
           serialise = new ObjectOutputStream(new FileOutputStream(path));

           serialise.writeInt(alp.size());

           for (int i =0; i < alp.size(); i++){

           serialise.writeObject(alp.get(i));
           serialise.flush();

           }
           serialise.close();
       } catch (FileNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }



   }




   public static ArrayList deserialiser(String path)
   {
       ArrayList retour = new ArrayList();

       ObjectInputStream deserialise;
       try {

           deserialise = new ObjectInputStream(new FileInputStream(path));
           for (int i = 0; i < deserialise.readInt(); i++){
               Point p = (Point)deserialise.readObject();
               retour.add(p);
           }

       } catch (StreamCorruptedException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (FileNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (ClassNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }

       return retour;

   }

Quelqu'un aurait une idée ? Merci :)

Lien vers le commentaire
Partager sur d’autres sites

et c'est quoi le problème ?

exception ? plantage ? rien ?

juste comme ça ce genre de code me fait toujours peur:

for (int i = 0; i < deserialise.readInt(); i++){

je ne sais jamais si la clause conditionnelle du for est executée 1 fois ou à chaque tour (ça dépend du compilateur et du langage etc..)

donc moi j aurais fait :

int max = deserialise.readInt();

for(int i=0;i

bon après le pb vient surement pas de là.

Lien vers le commentaire
Partager sur d’autres sites

Ceci dit, ArratList implémente Serializable, tu ne devrais pas avoir à iterer toi-même dessus. Soit Point est deja serialisable et tu peux directement faire un writeObjet de ta liste, soit il ne l'est pas et tu vas devoir t'arranger pour qu'il le soit.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...