2013-05-20 1 views
0

J'ai écrit dans des fichiers avant et jamais rencontré ce problème, je suis complètement confus.Erreur Weird FileWriter

EDIT: Désolé, l'erreur est qu'aucune ligne n'est écrite dans le fichier .txt.

System.out.println(upto); 
    FileWriter writer; 
    BufferedWriter write; 

    upto = 10; 
    try{ 
    writer = new FileWriter(theFile);  
    write = new BufferedWriter(writer); 
    write.write(upto); 
    write.flush(); 
    write.close(); 

    }catch(Exception e){ 
     System.err.println("cant print line"); 
    } 

des thats est le code qui Handels écrit au fichier, le seul autre code est le chemin de déclarer fichier. Aucune erreur d'exception n'apparaît non plus. Je me suis assuré que je rinçais/fermais l'écrivain aussi. Quelqu'un pourrait-il aider?

+0

Quelle est l'erreur? –

Répondre

1

Vous imprimez le caractère 10, qui est un saut de ligne. Si vous voulez imprimer le numéro 10, essayez

+0

En fait, il imprime un int, donc c'est 4 octets (pas seulement les "pertinents"). Donc, il imprime '[NUL] [NUL] [NUL] [LF]' (si j'ai bien compris l'endianisme). Quoi qu'il en soit, +1. – SJuan76

+0

C'est un bon point. Le [javadoc] (http://docs.oracle.com/javase/1.4.2/docs/api/java/io/BufferedWriter.html#write%28int%29) est un peu ambigu à ce sujet. Il semble dire que le type de paramètre devrait être char plutôt qu'int. La description de la méthode suggère que l'int est converti en char interne. – Tap

+0

Ok, je n'ai pas vérifié le javadoc, je pensais que c'était une fonction surchargée (avec un 'write (int)', un 'write (char)', etc.). Ma faute. – SJuan76

1

Vous écrivez un nombre. Cela signifie que vous écrivez les octets du nombre (0x0000000A), pas sa représentation de caractères 10. Lorsque vous l'ouvrez avec le bloc-notes ou similaire, il trouve simplement qu'il ne contient pas de valeurs ASCII imprimables et que vous le voyez seulement vide. Utilisez write.write(Integer.toString(upto)) pour voir la différence.