2016-04-23 9 views
0

Ich bin nicht sicher, warum meine Ausgabefunktion keine Zeilenumbrüche aufnimmt, wenn sie eine Datei erstellt. Hier ist der Code:FileWriter wird keine neuen Zeilen anhängen

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"); 
    } 
    } 

Meine toString Methode funktioniert gut, wenn ich an die Befehlszeile drucken, aber löscht alle Instanzen von \ n in der Datei ausgegeben. Hier ist ein Beispiel "gebrochen" Ausgabe dieser Funktion (dies ist ein Frequenzzähler)

Output File: Q: 5 \ n: 7 C: 1 a: 5 t: 6 s: 3 (space): 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

Es sollte nach jeder Nummer neue Linien sein.

Wenn Sie die volle Gruppe meiner Klassen wollen, hier sind sie: http://pastebin.com/CCLLBUqF

Antwort

1

Wenn die Datei zu schreiben, müssen Sie sowohl eine neue Zeile und eine Zeilenvorschub-Zeichen umfassen. Also, in Ihrem toString() Verfahren, in dem Sie die "\n" Newline, fügen stattdessen sowohl einen Zeilenvorschub und Newline: "\r\n"

+0

Idealerweise sollten Sie System.getProperty verwenden ("line.separator"); anstelle eines plattformabhängigen Zeilentrennzeichens – Natecat

+0

Hm. Ich habe versucht, beide "\ r" und die System.getproperty -Methode, und beide sind fehlgeschlagen. Die \ r änderte nichts und die System.getProperty fügte einfach überall "null" hinzu. – MegaZeroX

+0

Vergiss es. Es funktionierte, als ich es in die Reihenfolge mit \ r \ n änderte. Ich danke dir sehr! – MegaZeroX