Partage
  • Partager sur Facebook
  • Partager sur Twitter

sauvegarde d'objet dans un fichier texte

java-entrée-sorties

    16 avril 2010 à 20:58:44

    Bonjour voila j'ai un problème avec les entrées-sorties en java, je veux sauvegarder des partie d'un jeux dans un fichier texte pour que je puisse les récupérer après pour charger les partie, vous trouverez en bas mon code,je dois parcourir tout le fichier jusqu'à la fin pour mettre ma nouvelle partie ou bien il le fait automatiquement sans écraser la précédente? , et aussi quesque je dois mettre comme condition pour parcourir tous le fichier et récupérer toute les parties?
    merci pour votre aide.



    ObjectInputStream oiss = null;
    	      ObjectOutputStream ooss = null;
    	      
    	      Partie p=new Partie(5,new JoueurH(),Partie.unNiveau.PEUHABILE);
    	      try {
    			ooss = new ObjectOutputStream(
    					new BufferedOutputStream(
    							new FileOutputStream(
    									new File("game.txt"))));
    			ooss.writeObject(p);
    			ooss.close();
    		} catch (FileNotFoundException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		} catch (IOException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
      	
    	      
    	     try {
    			oiss = new ObjectInputStream(
    					new BufferedInputStream(
    							new FileInputStream(
    									new File("game.txt"))));
    			while(condition??){
                            System.out.println(((Partie)oiss.readObject()).getTailleDamier());
                              }
    			oiss.close();
    
    		} 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();
    		}
    
    • Partager sur Facebook
    • Partager sur Twitter
      16 avril 2010 à 23:41:49

      Fais quelques recherches sur la sérialisation d'objet, cela te simplifiera grandement la vie ;)
      • Partager sur Facebook
      • Partager sur Twitter
        16 avril 2010 à 23:45:51

        ben je crois que c'est la serialisation ce que je suis entrin de faire la, je veux juste demander si je veux rajouter un objet ,dois je parcourir tout le fichier jusqu'a la fin?
        • Partager sur Facebook
        • Partager sur Twitter
          17 avril 2010 à 1:47:45

          Salut,

          La sérialisation sauvegarde une instance d'objet dans un état précis. Si j'ai bien compris, tu veux simplement pouvoir charger une partie enregistrée...
          Tu n'as pas besoin de parcourir tout le fichier pour récupérer une partie, tu peux simplement la stocker dans une variable Partie et récupérer chaque variable pour les attribuer à ta partie active.

          Par exemple:
          oiss = new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File("game.txt"))));
          Partie pAux = (Partie)oiss.readObject();
          oiss.close();
          p.setVariable1(pAux.getVariable1());
          p.setVariable2(pAux.getVariable2());
          


          Bye
          • Partager sur Facebook
          • Partager sur Twitter
            17 avril 2010 à 2:13:35

            non mais dans le cas ou je veux sauvegarder une partie, je dois parcourir tous le fichier pour l'ajouter a la dernière position?
            et pour ce que tu vien de poster "bibibond" si j'ai stocker une partie dans un fichier c'est pour la récupérer directement apré , pourquoi je voudrais récupérer ses variable pour les mettre dans une partie active?
            • Partager sur Facebook
            • Partager sur Twitter
              17 avril 2010 à 2:31:49

              Mais alors pourquoi la sauvegarder pour la récupérer tout de suite après ? o_O

              Et j'avais pas capté que tu mettais toutes les parties dans un seul fichier texte, en fait... j'avoue que je ne vois pas trop l'interêt. Se serait sûrement mieux d'enregistrer chaque partie dans un fichier différent, non?
              Et, qui plus est, ne pas mettre l'extension .txt pour tes objets sérialisés... ça n'a pas de sens. Pourquoi ne pas les enregistrer en .mp3, dans ce cas ?
              • Partager sur Facebook
              • Partager sur Twitter
                17 avril 2010 à 9:55:30

                ben qu'importe l'extension des fichier?,, je n'ai pas dis que je voulais récupérer ma partie toute de suite je parle pour aprés lorseque le joueur voudra la charger, et pourquoi mettre chaque partie dans un fichier or que je peux les mettre dans un seul fichier et limiter la sauvegarde a 10 parties, c'est a dire je met les partie dans un tabbleau et aprés j'enregistre le tableau dans un fichier,
                si je met mes parties dans plusieurs fichier comme tu l'a dit ,j'aurai du mal a les lister tous pour que l'utilisateur les voie car je devrai lire tous les fichier au lieu d'un
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  17 avril 2010 à 10:05:54

                  si c'est dans un seul fichier, sérialise un Set < Partie >(pour éviter les doublons)
                  il faut alors toujours bien t'assurer de la cohérence entre la référence de la partie et celle du Set, ou alors redéfinir hashCode() et equals() sur des attributs pertinents.

                  quand tu la déserialise, il te suffit de choisir la partie à lancer dans la liste.

                  à chaque écriture, tu écrases complètement les données du fichier(à moins que ça pose un problème de performance bien sur).
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 avril 2010 à 10:17:22

                    Salut,
                    J'ai rajouté les balises code à ton post du haut. Tu peux éditer ton message pour voir comment on fait, ou corriger l'indentation. Merci d'y penser à l'avenir ! :)
                    Bonne continuation,

                    GuilOooo
                    • Partager sur Facebook
                    • Partager sur Twitter
                    J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
                      18 avril 2010 à 11:06:18

                      shakhal, lorsque tu me dis:
                      "à chaque écriture, tu écrases complètement les données du fichier(à moins que ça pose un problème de performance bien sur)"

                      comment je fais pour que lors de la sauvegarde d'une nouvelle partie je n'écrase pas les ancienne parties?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        18 avril 2010 à 11:17:58

                        serialiser la liste va ecrire tout son contenu dans le fichier, donc toutes les parties.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 avril 2010 à 13:28:39

                          ouais mais la c'est dans le cas ou je met mes partie dans une liste et apré je met la liste dans le fichier,, mais dans le cas ou je met directement mes partie dans le fichier je dois parcourir tous le fichier pour la mettre a la fin?
                          ps: java gére les fichier xml si oui alors je préfére mettre mes partie dans un fichier xml que dans un fichier texte si vous pouvez m'orioenter sur "comment je créé un fichier xml en fonction de mes attrbibut et comment je le gére avec java
                          merci
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 avril 2010 à 13:31:56

                            La méthode proposée par shakhal est la moins prise de tête, je t'assure ;)

                            Mais si tu y tiens vraiment : http://cynober.developpez.com/tutoriel/java/xml/jdom/
                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 avril 2010 à 13:36:03

                              pour que sa soit clair, la méthode proposée par shakhal c'est de mettre mes parties dans une liste pour la sauver aprés dans le fichier?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 avril 2010 à 14:18:55

                                imaginons que t'as déjà sérialisé un Set de <Parties>.
                                Si tu veux ajouter une sauvegarde, tu désérialises la liste, tu la cast en Set<Parties>, tu lui ajoutes la sauvegarde, puis tu la sérialises.
                                • Partager sur Facebook
                                • Partager sur Twitter

                                sauvegarde d'objet dans un fichier texte

                                × 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