Wie kann ich mit FileWriter einen String in eine .txt anhängen?

Hallo und guten Abend zusammen,

Ich habe folgendes Problem: Ich habe ein Programm, bie dem in einer for-Schleife ein String gebastelt wird. Hier gibt es keine Probleme. Innerhalb des Strings gibt es Zeilenumbrüche("
"). Wenn ich diesen String auf einer JTextArea ausgebe, dann läuft alles wie geschmiert. Wenn ich jetzt aber den String in eine .txt schreiben will, dann verschwinden die Zeilenümbrüche. Wenn ich bei jedem Schleifendurchlauf den generierten Teilstring einzeln an eine erzeugte .txt anfügen will, dann wird der Inhalt jedes Mal überschrieben und nur der letzte tempString verbleibt in der Datei. Wie kann ich dieses Problem lösen? Wie gesagt: entweder kompletten String inkl. Zeilenumbrüchen oder jeden Teilstring in einer neuen Zeile der.txt. Ich arbeite mit dem FileWriter, sollte ich eine andere Klasse benutzen? Ich hab schon vom Printwriter gehört, aber ich sträube mich da ein wenig gegen, wiel ich denke, dass in eine File mit einem Filewriter geschrieben werden solte.

Ideen:
Umbrüche im String durch Filewriter berücksichtigen: nein, keine Idee
Neue Zeile mit Teilstring anfangen: Ja, immer am Ende der .txt beginnen zu schreiben, satt alles zu überschreiben, aber wie bringe ich das dem Filewriter bei?

Ich hoffe ihr habt mein Problem verstanden und könnt mir helfen.

Da könnte man an verschiedenen Stellen ansetzen.

Ich nehme an, Du baust den FileWriter für jede Zeile neu. Das ist nicht nötig; wenn Du immer die gleiche Instnaz verwendest, wird auch angehängt. Aber wenn Du schon für jede Zeile einen neuen FileWriter nimmst, dann verwende diesen Konstruktor, damit kannst Du explizit steuern, ob angehängt oder überschrieben werden soll

Ansonsten wäre PrintWriter tatsächlich eine gute Idee, der macht beim println die (plattformabhängigen) Steuerzeichen schon richtig.

Rufe PrintWriter einfach mit true auf, ist höheres level, sollte so angewandt werden, Weiteres siehe API.

Egal was ich mache, das "
" wird konsewunt ignoriert. Egal ob ich es direkt im übergebenen String mitgebe oder die append-Methode mit dem character aufrufe. Am Ende der Datei schreiben geht, genauso wie vorher schon, aber eben keine Zeilenumbrüche.

Du hast eine Lösung schon erhalten, PrintWriter. Die hast du ignoriert, zweimal.

ist kein Zeilenumbruch an sich. Bist du sicher dass der Zeilenumbruch für dein System auch
lautet?
Mit
System.lineSeparator();
kriegst du den in deinem System spezifizierten newline character zurück. (Den solltest du dir vielleicht in einer statischen Variable ‘N’ oder so, speichern)
Kannst ihn spaßeshalber auch gerne mal in die Konsole schreiben lassen.
PrintWriter macht das automatisch.

Ohne den Code zu sehen kann man da nur raten.

Mein Tipp:
Du erzeugst den FileWriter in jedem Durchlauf der Schleife neu.
Das führt dann dazu, dass die Datei in jedem Schleifendurchlauf wieder ab Position 0 beschrieben wird.

Ist aber (wie gesagt) nur geraten…

bye
TT

@TMII : ich hab das zwar nicht erwähnt, aber ich habe sowohl FileWriter als auch Printwriter benutzt. Mit beiden kann ich zwar am Ende der Datei weiter schreiben, aber wie Du in deinem Post schreibst, scheinen nicht die Streams das Problem zu sein, sondern der falsche LineSeperator. Den Tipp werd ich aufgreifen,wenn ich einigermaßen wach bin;-) Danke dafür und für alle anderen Hilfestellungen:-)

Etwas QnD:


public class HelloWorld{
     public static void main(String []args) throws IOException {
        PrintWriter pw = new PrintWriter(new FileWriter("test.txt", true), true);
        pw.println("neue Zeile");
        pw.println("hallo Welt");
        pw.close();
     }
}

, an test.txt wird jetzt immer Text angehängt. Außerdem auto flush.

Das println() war genau, was ich brauchte, vielen dank, klappt perfekt jetzt:)