2016-04-23 3 views
0

Je ne sais pas pourquoi ma fonction de sortie ne sélectionne pas les nouvelles lignes lorsqu'elle crée un fichier. Voici le code:FileWriter n'ajoutera pas de nouvelles lignes

private void outputToFile(){ 
    final JFileChooser fc = new JFileChooser(); 
    fc.setSelectedFile(new File("frequency.txt")); 
    int returnVal = fc.showSaveDialog(null); 
    File file = fc.getSelectedFile(); 
    try{ 
     FileWriter writer = new FileWriter(file); 
     String out = this.toString(); 
     writer.append(out); 
     writer.flush(); 
     writer.close(); 
    } 
    catch(IOException e){ 
     System.out.println("Cancelled and aborted"); 
    } 
    } 

Ma méthode toString fonctionne très bien lorsque j'imprime à la ligne de commande, mais supprime toutes les instances de \ n dans la sortie de fichier. Voici un exemple de "cassé" sortie de cette fonction (ce qui est un compteur de fréquence)

Output File: Q: 5 \ n: 7 C: 1 a: 5 t: 6 s: 3 (espace): 6 r: 1 e: 4 c: 1 o: 2 l: 3 :. 2 W: 1 , 1 h: 4 « : 1 w: 1 y: 3 \ t: 1 R: 1 i: 1 g : 1 : 1 B: 1 : 1

Il devrait y avoir de nouvelles lignes après chaque numéro là-bas.

Si vous voulez que le groupe complet de mes classes, voici: http://pastebin.com/CCLLBUqF

Répondre

1

Lors de l'écriture du fichier, vous devez inclure à la fois un saut de ligne et un caractère de saut de ligne. Ainsi, dans votre méthode toString(), où vous ajoutez la "\n" nouvelle ligne, au lieu d'ajouter à la fois un saut de ligne et retour à la ligne: "\r\n"

+0

Idéalement, vous devriez utiliser System.getProperty (« line.separator »); au lieu d'un caractère séparateur de ligne dépendant de la plate-forme – Natecat

+0

Hm. J'ai essayé d'utiliser "\ r" et la méthode System.getproperty, et les deux ont échoué. Le \ r n'a rien changé, et le System.getProperty vient d'ajouter "null" partout. – MegaZeroX

+0

Nevermind. Cela a fonctionné quand je l'ai changé à l'ordre avec \ r \ n. Merci beaucoup! – MegaZeroX