J'ai un pb, sans doute lié à une mauvais utilisation d'appel de classe :
Quand je sauve 1 objet dans un fichier, des caractères "perturbateurs" apparaissent dans le fichier.
Je n'ai pas trouvé sur le forum d'où ça pouvait venir,
mais peut-être saurez vous me le dire ?
Merci
dans Test.java :
----------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public class Test { public static void main(String [] args) { String ligne; // parametre chaine caracteres pour ecrire dans fichier String fichierIn="carte.txt"; // Fichier en entrée String fichierOut="essai1.txt"; // Fichier en sortie par defaut int optionsN=args.length; // nombre d'arguments passes en parametre String options =""; // les arguments seront dans une chaine unique (facilite le traitement) if (optionsN==0) { // Pas d'arguments, on averti l'utilisateur des options possibles. } else { switch (optionsN) { case 2: fichierOut=args[1]; case 1: fichierIn=args[0]; break; } } SauveFic fic = new SauveFic(fichierOut); ligne="\nFichier entree="+fichierIn+" test"; fic.ecrireLigne(ligne); ligne="\nInitialisation avec un chemin aleatoire :"; ligne=ligne+"\nDuree optimisation :"; fic.ecrireLigne(ligne); ligne="\nVoici le meilleur chemin trouve :\n"; fic.ecrireLigne(ligne); fic.fermeFic(); } }
dans la classe SauveFic.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 // Importation des bibliothèques import java.util.Scanner; // Pour la lecture au clavier import java.io.Serializable; // Pour lire/ecrire objets sur fichier import java.io.File; // Lecture ecriture des fichiers import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.IOException; // pour traiter les erreurs // Classe pour sauver des objets de maniere generique public class SauveFic { FileOutputStream o_fo; // Sert pour l'ecriture sur disque ObjectOutputStream o_oo; boolean ecritDisque; // indicateur pour savoir si on a oui ou non une ecriture en sortie String fichierOut; private String ligne; public SauveFic(String fichierOut) { try { // FileOutputStream o_fo; // ObjectOutputStream o_oo; if ((fichierOut==null)||(fichierOut=="")) { System.out.println("Il manque le nom de fichier --> pas de fichier en ecriture"); ecritDisque=false; // System.exit(0); } else { o_fo = new FileOutputStream(fichierOut); // Ouvre le fichier en ecriture o_oo = new ObjectOutputStream(o_fo); // pour ecrire sur le fichier ouvert ecritDisque=true; } } catch (IOException e) { System.out.println(" erreur :" + e.toString()); } } // Permet d'ecrire a l'ecran // et sur disque si un argument 'out' a ete declare (nom de fichier en sortie) public void ecrireLigne(String ligne) { System.out.println(ligne); if (ecritDisque) { try { o_oo.writeObject(ligne); } catch (IOException e) { System.out.println(" erreur :" + e.toString()); } } } public void fermeFic() { if (ecritDisque=true) { try { o_oo.flush(); o_oo.close(); } catch (IOException e) { System.out.println(" erreur :" + e.toString()); } } } }
Partager