écriture et lecture dans un fichier text
Résolu/Fermé
A voir également:
- écriture et lecture dans un fichier text
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
1 réponse
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
5 déc. 2012 à 10:33
5 déc. 2012 à 10:33
new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(Ça commence à faire beaucoup de stream d'ouvert pour ne stocker que deux objets !
new File("saveMazeOfHorror.txt")C'est un point de détail, mais le contenu de ton fichier sera binaire, il est fortement déconseillé de lui donner une extension de fichier texte !
Bon après, il y aurait surement d'autres choses à dire, mais LA grosse erreur, est ici :
public void Load (World w, Hero h) { ... w = (World)ois.readObject(); h = (Hero)ois.readObject();
Jamais, au grand jamais, on ne peut modifier des objets passés en paramètre en faisant une simple affectation de leurs valeurs ! Ici "w" et "h" seront bien modifiés à l'intérieur de Load, mais il n'y aura aucune conséquence au niveau de l'appel de Load, de même que pour "n" dans mon exemple suivant :
public static void incr(int n) { System.out.println(n); n++; System.out.println(n); } public static void main(String[] args) { int k = 1; System.out.println(k); incr(k); System.out.println(k); }
Remarque : il y a encore plein d'autres choses qui peuvent ne pas fonctionner, en particulier parce que tes objets doivent être sérialisables, et que l'on ne sait pas si tu as fait ce qu'il fallait, mais au niveau des ObjectStream ceci serait mieux :
public void saveWorld(World w) throws IOException { ObjectOutputStream oos = new ObjectOutputStream("save.world"); oos.writeObject(w); oos.close(); } public void saveHero(Hero h) throws IOException { ObjectOutputStream oos = new ObjectOutputStream("save.hero"); oos.writeObject(h); oos.close(); } public World loadWorld() throws IOException { ObjectInputStream ois = new ObjectInputStream("save.world"); World w = (World) ois.readObject(); ois.close(); return w; } public Hero loadHero() throws IOException { ObjectInputStream ois = new ObjectInputStream("save.hero"); Hero h = (Hero) ois.readObject(); ois.close(); return h; }
5 déc. 2012 à 11:22