Java - Drole de symboles fichier.txt

[Résolu/Fermé]
Signaler
Messages postés
18
Date d'inscription
samedi 5 novembre 2011
Statut
Membre
Dernière intervention
18 septembre 2012
-
Messages postés
18
Date d'inscription
samedi 5 novembre 2011
Statut
Membre
Dernière intervention
18 septembre 2012
-
Bonjour,


voilà quelques jours que je crée un programme qui doit s'appuyer sur des données d'un fichier excel.
Vu que je dois manipuler ces données "dans tous les sens" (1ère fois que j'utilise POI) j'ai décidé de les reclasser dans un fichier .txt .

Et là ça se complique, j'ai extrait tout ce dont j'avais besoin du fichier excel sous forme de Double, je les rentre dans un fichier.txt et lorsque j'ouvre ce fichier je regrette de ne pas parler chinois (il n'y a que des symboles "chinois").

Extrait du code:

try {


fos = new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File("test.txt"))));





for (Iterator rowIt = sheet.rowIterator(); rowIt.hasNext();) {
totalLigne = 0;
row = (HSSFRow) rowIt.next();

for (Iterator cellIt = row.cellIterator(); cellIt.hasNext();) {
cell = (HSSFCell) cellIt.next();
System.out.println("cellule: "+cell);




celldouble=0.0;
cellstring=cell.toString();


if(cellstring!=""){
celldouble = Double.parseDouble(cellstring);

fos.writeDouble(celldouble); //--------------------------ici j'écris
}





System.out.println("celldouble |"+celldouble+"|"); // --------"bons" nombres





System.out.println("");

}


}




fos.close();
System.out.println("terminé !");

} catch (FileNotFoundException e) {
//Cette exception est levée
//si l'objet FileInputStream ne trouve aucun fichier
e.printStackTrace();
} catch (IOException e) {
// Erreur
//d'écriture ou de lecture
e.printStackTrace();
}





} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}


En sachant que dans la console les "bons" nombres apparaissent, mais pas dans test.txt...

Merci d'avance!

2 réponses

Messages postés
16404
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2021
2 894
C'est parce que tu utilises un ObjectOutputStream, ce que tu fais en fait c'est que tu stockes les valeurs de tes double en binaire sur 64 bits, et non pas en chiffres comme tu le voudrais... Essayes plutôt :

FileOutputStream fos = new FileOutputStream("test.txt"); 
// ... 
fos.write(cellstring.getBytes());

La confiance n'exclut pas le contrôle
Messages postés
18
Date d'inscription
samedi 5 novembre 2011
Statut
Membre
Dernière intervention
18 septembre 2012

C'était ça!

Merci beaucoup KX ca marche parfaitement maintenant!!



Bonne soirée.