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();
}
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?
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());
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?
Mais alors pourquoi la sauvegarder pour la récupérer tout de suite après ?
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 ?
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
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).
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
J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
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?
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
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.
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.
Mon site - Mon livre sur le XML - Mon blog