Désérialiser plusieurs Objets Java

bonjour chers collègues,

J'ai un Jardin à la classe dans laquelle je sérialiser et désérialiser Végétale multiples objets de la classe. La sérialisation est un travail, mais la désérialisation ne fonctionne pas si un souhaitez affecter à l'appel de la variable dans le mein méthode statique.

public void searilizePlant(ArrayList<Plant> _plants) {
    try {
        FileOutputStream fileOut = new FileOutputStream(fileName);
        ObjectOutputStream out = new ObjectOutputStream(fileOut);
        for (int i = 0; i < _plants.size(); i++) {
            out.writeObject(_plants.get(i));
        }
        out.close();
        fileOut.close();
    } catch (IOException ex) {
    }
}

désérialisation code:

public ArrayList<Plant> desearilizePlant() {
    ArrayList<Plant> plants = new ArrayList<Plant>();
    Plant _plant = null;
    try {
        ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName));
        Object object = in.readObject();

       //_plant = (Plant) object;


        //TODO: ITERATE OVER THE WHOLE STREAM
        while (object != null) {
            plants.add((Plant) object);
            object = in.readObject();
        }

        in.close();
    } catch (IOException i) {
        return null;
    } catch (ClassNotFoundException c) {
        System.out.println("Employee class not found");
        return null;
    }
    return plants;
}

Mon invoquant code:

ArrayList<Plant> plants = new ArrayList<Plant>();
plants.add(plant1);
Garden garden = new Garden();
garden.searilizePlant(plants);

//THIS IS THE PROBLEM HERE
ArrayList<Plant> dp = new ArrayList<Plant>();
dp = garden.desearilizePlant();

modifier

J'ai eu une exception de Pointeur null

La solution de @NilsH est fonctionne bien, merci!

  • Que voulez-vous dire par "il n'est pas de travail"? Le code de la compilation? Ne vous obtenez des erreurs lors de l'exécution? Quelles erreurs avez-vous obtenir exactement?
  • Salut, quel est le problème exact que vous avez vu? Que voulez-vous dire, il "ne fonctionne pas si un souhaitez affecter à l'appel de la variable dans le (principal) de la méthode statique"? Dans un débogueur, voyez-vous la plants tableau correctement construites?
  • Aussi, vous devez mettre votre IO appels à proximité, dans le finally bloc. Et aussi, vous n'avez pas besoin de votre ArrayList<Plant> dp = new ArrayList<Plant>();. Juste ArrayList<Plant> dp = garden.desearilizePlant(); que votre tableau est créé dans #deserializePlant
  • Pourquoi êtes-vous en boucle tout objet != null? Si vous prévoyez sur l'écriture d'une valeur null dans le flux de signal EOS, c'est redondant, et si vous vous attendez à lire une nulle sans l'écriture de celui que vous êtes trompé. Vous devriez être en rattrapage EOFException à la place.
InformationsquelleAutor imalik8088 | 2013-04-22