JTextArea mach beim Speichern am ende einer Zeile ein "\r"

munuel

Mitglied
hallo
hab folgendes Problem: :confused:
Ich habe mir einen Parser gemacht, der Textfiles parst!
Unter Linux hab ich die Sache programmiert und dort klappt es auch wunderbar.
Jetzt soll das ganze auch unter Windows laufen.
Ich weiss jetzt das unter Windows der Zeilenumbruch ein : "\r\n" ist. Bei Linux ist es ein "\n"!
Darauf habe ich meinen Parser(JavaCC erstellt) auch angepasst!
Mein Programm liest den File ein und stellt ihn in einen JTextArea da.Dort kann ich ich im TextArea auch den Inhalt ändern.
Jetzt das Problem: :(
Wenn ich den File jetzt abspeichere, wird an jedes Zeilenende ein "\r" angehängt. Und das nach jedem neuen Abspeichern! Wenn ich also drei mal abspeichere hab ich 3 mal "\n" (sieht im edit wie eine Note aus oder unter Notpad wie ein Kasten) . Dadurch wir die Datei beim nächsten Lesen für meinen Parser natürlich unkenntlich!

Das ist meine Speicher funktion:
public void writeFile(File file)
{
_file = file;
try
{
System.out.println(file.getAbsolutePath());
FileWriter out = new FileWriter(_file);
_jTextArea.write(out);
out.close();
} catch (IOException e)
{
System.out.println("Fehler beim Speichern");
}

}
Ziel sollte also sein diese "\r" am Ende nach dem Speicher wegzubekommen!
Eines dieser Steuerzeichen wird auch nur an das Ende gehängt bei Zeilen die ich nich editiere, also die vor der Speicherung nicht verändert worden sind!

Viel Grüsse munuel
 
Zuletzt bearbeitet:
Code:
public void writeFile(File file) 
	{
		_file = file;
		try 
		{			
			System.out.println(file.getAbsolutePath());
			FileWriter out = new FileWriter(_file);				
			_jTextArea.write(out);
			out.close();			
		 } catch (IOException e) 
		 {			   
		 	   System.out.println("Fehler beim Speichern");
		 }			 	
	 		 		 	
	}

Also ich mache sowas immer mit einem PrintWriter und speichere den Text mit myTextArea.getText() weg. Probier mal so.
 
Hallo snape,
Gute Idee ich werd es auch mal mit PrintWriter versuchen!
Ich hab es zur Zeit so gelöst das ich bei Windows das "\r" am Ende herausfiltere !

/
Code:
**
	 * Schreibt den Inhalt bei Änderung im TextArea zurück!
	 * 
	 * Bei der Nutzung von Windows trat das Phänomen auf dass ein "/r" sich nach jedem Abspeichern in den TextArea dranhängte! 
	 * Das wurde durch herausfiltern von "\r" berücksichtigt.
	 * 
	 * @param file Enthält die Fileinformationen
	 */
	public void writeFile(File file) 
	{
        try
        {
         _file = file;
         strOS = System.getProperty("os.name");
        // TODO PrintWriter und speichere den Text mit myTextArea.getText() weg.! 
        if ( 0 ==  strOS.compareTo("Windows XP")){
             //------------------------------------Windows Teil
             // Bei Windows wurden immer "\r" an das ende Zeile gehängt nach Speichern !
              System.out.println(System.getProperty("os.name")); 
              String strTextArea = _jTextArea.getText();
              String strNeu = strTextArea.replaceAll("\r","");
              _jTextArea.setText(strNeu);
             //------------------------------------Windows Teil
        }
        else{
        	System.out.println(strOS);
        }
        	
         FileWriter fileWriter = new FileWriter(_file);
         
         _jTextArea.write(fileWriter);
        fileWriter.close();
                 
        } catch (IOException e) 
         {
           //statusleiste.setText("Fehler beim Speichern von " + aktDateiname);
               System.out.println("Fehler beim Speichern");
         }			 		 	
	}
}

Viele Grüsse munuel
 
Zurück