Aller au contenu

Sérialisation d'une ArrayList<>


Cuillère

Recommended Posts

Posté(e)

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 :)

Posté(e)

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à.

Posté(e)

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.

Archivé

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

×
×
  • Créer...