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());
            }
        }
    }
}