caractères pertubateurs avec ObjectOutputStream
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:
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:
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());
}
}
}
} |