Wie kann ich Absätze in einem JTextArea auslesen, speichern und wieder einlesen ?

IZZO

Mitglied
Habe folgenden Codeausschnitt der auch funktioniert allerdings werden keine Absätze in die Datei eingespeichert. Wie geht das? Der Code steht in der actionPerformed()-Methode. "bladen1" und "bspeichern1" sind Buttons

Code:
 if(e.getSource() == (this.bladen1)){
        	 try
             {
        		 FileReader fr = new FileReader("C:/geh/fnotiz1.txt");
        		 BufferedReader br = new BufferedReader(fr);
                 String z1 = br.readLine();
                 tfnotiz1.setText(z1);
                 br.close();
             }
             catch( IOException ioe )
             {
                 ioe.printStackTrace();
             }  
        }
        //Wenn "Speichern" gedrückt wird schreibe den Text in eine Datei und lege diesen in das vorher erzeugte Verzeichnis
        if(e.getSource() == (this.bspeichern1)){
            try
            { 
                BufferedWriter fw = new BufferedWriter(new FileWriter(fnotiz1)); 
                
                fw.write(strg1);
                fw.flush();
                fw.close(); 
               
            }
            catch( IOException ioe )
            {
                ioe.printStackTrace();
            }
 

Timmes28

Grünschnabel
Ich habe gerade keine Möglichkeit das zu überprüfen, aber gibt es nicht normal eine Funktion wirteLine.
Code:
fw.writeLine("Das ist ein Text")
oder
Code:
fw.newLine()

Wenn nicht versuch es mal mit fw.write("das ist ein text" + "\n")
 

Improof

Erfahrenes Mitglied
Hallo,

Erstmal ein kleiner Tipp für die Zukunft: Du solltest anstatt CODE-Tags die JAVA-Tags beim Posten benutzen, so kann man deinen Code besser lesen ;)


Nun zu deinem Problem:
Absätze in einem JTextArea müssten doch als "\n" (also Line Feed) im jeweiligen String stehen, oder?
Also falls ich mich da nicht total irre, hast du nur ein kleines "Anzeigeproblemchen":

Verwendest du Windows? Da werden nämlich nicht - wie bei Linux - nur "\n" am Ende einer Zeile angefügt, sondern "\r\n" (Carriage Return und Line Feed). Hast du nun unter Windows einen Texteditor, der nicht "schlau" genug ist zu wissen, dass ein einfaches "\n" auch ein Zeilenumbruch ist, so zeigt er ihn dir auch nicht an...

Ein Beispiel ist der Standardtexteditor unter Windows. Ich vermute jetzt einfach mal, dass du den verwendest, weil es sich ja auch um eine Standard-txt-Datei handelt.


Versuch doch mal Notepad++, da wirst du andere Ergebnisse sehen. Ich glaube sogar das Windows-WordPad (nicht mit Word verwechseln!) kanns dir richtig anzeigen, dass müsste sogar schon mit Windows installiert sein.

Ansonsten kannst du in deinem Code versuchen, alle "\n" durch "\r\n" zu ersetzen, dann gehts auf Windows in alles Texteditoren. Wies dann aber in Linux aussieht kann ich dir auch nicht sagen :/

Das mit dem Ersetzen würde übrigens folgendermaßen aussehen:

Java:
str = str.replace("\n", "\r\n");


Ich hoffe, ich konnte helfen :D

MfG
improof