Partage
  • Partager sur Facebook
  • Partager sur Twitter

Serialization

Sujet résolu
    13 mai 2021 à 17:14:35

    Bonjour a tous 

    dnas le cadre d'un projet scolaire je suis amené a rentrer dans un fichier texte des infomation mais mon code ne fonction pas 

    et je ne sais pas pouquoi ( j ai pas de message d'erreur )

    package proj.poo.preparation;
    
    import java.io.*;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    public class PlatCreer {
    
        Logger logger = Logger.getLogger("Ingrediant");
        private List<Plat> plat =  new ArrayList<>();
    
        public PlatCreer() {
    
        }
    
        public void ajout(Plat plats){
            plat.add(plats);
        }
    
    
        public  void afficherUneRecette() {
            int x = 0;
            File fic = new File("C:\\Users\\chris\\Documents\\Licence Informatique\\L2\\Semestre 2\\POO\\TP\\Projet\\src\\main\\java\\proj",
                    "Legume.txt");
    
    
            try {  for (Plat p : plat) {
               FileOutputStream outStream = new FileOutputStream(fic);
                DataOutputStream dw = new DataOutputStream(outStream);
    
    
                    dw.writeUTF(p.getNom());
                    dw.writeInt(p.getAl().get(x).getIngrediant().getId());
                    dw.writeUTF(p.getAl().get(x).getIngrediant().getNom());
                    dw.writeDouble(p.getAl().get(x).getIngrediant().getCalories());
                    dw.writeBoolean(p.getAl().get(x).getIngrediant().isBio());
                    outStream.close();
                    ++x;
                }
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    
    
            try {
                for (Plat p : plat) {
                    DataInputStream dt = new DataInputStream(new FileInputStream(fic));
    
                    String a = dt.readUTF();
                    int b = dt.readInt();
                    String c = dt.readUTF();
                    double d = dt.readDouble();
                    Boolean e = dt.readBoolean();
    
                    logger.log(Level.INFO, "" + a +
                            " " + b + " " + c + " " + " " + d + " " + e + " ");
                }
            } catch (FileNotFoundException e) {
    
                e.printStackTrace();
    
            } catch (IOException e) {
    
                e.printStackTrace();
            }
        }
    
        public List<Plat> getPlat() {
            return plat;
        }
    
        public void setPlat(List<Plat> plat) {
            this.plat = plat;
        }
    
    }
    
    
    • Partager sur Facebook
    • Partager sur Twitter
      13 mai 2021 à 17:57:23

      Bonjour,

      sans informations complémentaires, je ne vais pas lire n'y chercher à comprendre le fonctionnement de ton code. Qu'est-ce-qui ne fonctionne pas ? 

      • ton fichier est vide ?
      • le contenu du fichier est faux ?
      • tu n'arrives pas à relire ton fichier ?

      -
      Edité par rybla 13 mai 2021 à 17:57:36

      • Partager sur Facebook
      • Partager sur Twitter
        14 mai 2021 à 13:11:47

        Bonjour,

        le contenue du fichier est vide

        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2021 à 19:39:50

          Tu as bien une liste de plat ? Si la liste est vide le fichier sera vide.

          Il faut déplacer:

                     FileOutputStream outStream = new FileOutputStream(fic);
                     DataOutputStream dw = new DataOutputStream(outStream);

          avant de parcourir la boucle car là tu vas recréer le fichier pour chacun des plats. Ou setter l'option append à true.

          Pour la lecture tu as aussi des soucis:

          for (Plat p : plat) {
                          DataInputStream dt = new DataInputStream(new FileInputStream(fic));
           
                          String a = dt.readUTF();
                          int b = dt.readInt();
                          String c = dt.readUTF();
                          double d = dt.readDouble();
                          Boolean e = dt.readBoolean();
           
                          logger.log(Level.INFO, "" + a +
                                  " " + b + " " + c + " " + " " + d + " " + e + " ");
                      }

          Tu tentes de faire quoi là, je ne comprends pas ton raisonnement.

          -
          Edité par rybla 15 mai 2021 à 19:41:17

          • Partager sur Facebook
          • Partager sur Twitter
            16 mai 2021 à 14:50:55

            pour la lecture j'essaie de lire la totalité du fichier crée
            • Partager sur Facebook
            • Partager sur Twitter

            Serialization

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown