J'ai donc un programme qui recueille un tas de données et concatène en continu les données dans une chaîne avec un seul espace blanc entre chaque entrée. Au cours de ma routine de fermeture, j'imprime la chaîne dans un fichier txt en utilisant un éditeur tamponné. Environ 50% du temps, les données apparaissent comme des symboles (principalement) chinois. La VM fait-elle des trucs Unicode bizarres? Pourquoi cela se produit-il seulement parfois?Buffered Writer crée parfois des symboles plutôt que des chiffres
J'ai regardé autour d'autres forums et n'ai pas vu d'autres instances de ce problème. Aucun des autres majors CS que je connais ne comprend ce qui se passe.
EDIT: les données sont toutes des nombres entiers compris entre 0 et 1 365; MISE À JOUR: après d'autres recherches, j'ai trouvé this ce qui me fait penser à un PrintStream plutôt qu'à un BufferedWriter, est-ce que quelqu'un peut en parler? J'ai testé le PrintStream et je ne serai pas capable de le construire avec un FileWriter comme je le ferais pour un BufferedWriter, ce qui signifie que j'ai besoin de plus de recherches pour écrire sur mon txt. UPDATE: l'impression sur la console ne provoque pas l'apparition de cette erreur.
J'accepterai une réponse qui explique comment le Bloc-notes (le programme que j'utilise pour ouvrir le txt) affiche parfois des chiffres et parfois affiche des symboles.
Voici le code correspondant:
//fields
private static BufferedWriter out;
private File saveFile;
String data;
//inside constructor
this.saveFile = new File("C:\\Users\\HPlaptop\\Desktop\\MouseData.txt");
this.saveFile.delete();
try{this.saveFile.createNewFile();}
catch (IOException e){System.out.println("File creation error");}
try {out = new BufferedWriter(new FileWriter("C:\\Users\\HPlaptop\\Desktop\\MouseData.txt"));}
catch (IOException e) {System.out.println("IO Error");}
this.control.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{ //there is a method call here but the basics are below
out.write(data);
out.close();
System.exit(0);
}
});
Voici un exemple d'ensemble de données imprimées correctement:
1365 767 1365 767 1365 767 1364 767 1353 756 1268 692 1114 604 980 488 812 334 744 283 694 244 593 150 473 81 328 13 207 0 124 0 115 0 102 0 99 6 107 13 132 20 173 32 187 31 190 25 194 20 201 17 215 14 221 10 224 7 224 7 224 7 226 6 226 6 226 6 226 6 226 6 226 6 226 6
Cet ensemble de données a été prise quelques secondes plus tard et n'est pas ce que je veux
㐀ㄹ㈠㤰㐠㔸㈠㈱㐠㠶㈠㐱㐠㘲㈠㘰㌠㠷ㄠ㔹㌠㌳ㄠ㌹㈠㘹㈠㈠㠷㈠㜳㈠㐶㈠㐷㈠㐶㈠㔷㈠㌶㈠㔵㈠㐵㈠㠰㈠㤴ㄠ㔲㈠㤴㐠‶㐲‹㌱㈠㘴〠㈠㘴〠㈠㘴〠㈠㜴〠㈠㠴〠㈠㠴〠㈠㜴㠠㈠㔴ㄠ‶㐲‵㤱㈠㔴ㄠ‹㐲‵㠱㈠㜴ㄠ‶㐲‹ㄱ㈠〵ㄠ‰㔲‰〱
Aussi bien qu'il soit environ 50% ce n'est pas tous les autres temps – Czarking
Qu'est-ce qui vous fait penser que les données elles-mêmes ne sont pas des symboles chinois étranges? Je serais moins enclin à blâmer sur le BufferedWriter que les données – Stoud
bon point que j'ai édité ma question; les données sont toutes des nombres entiers compris entre 0 et 1 356; Je n'ai pas inclus tout le code car il serait trop long. – Czarking