Java String in Datei schreiben

cl0udt

Lt. Junior Grade
Registriert
Sep. 2008
Beiträge
508
Hallo zusammen,

habe ein kleines Problem beim Schreiben eines Strings in eine Datei.
Leider werden Absätze ignoriert... mein code sieht wie folgt aus:


Code:
//hier hol ich mir den String, der ist hier definitiv noch mit Absätzen gepeichert
String test = getRules().getText();
File file;

if(saveRuleFC.showSaveDialog(null)== JFileChooser.APPROVE_OPTION){
     file = saveRuleFC.getSelectedFile(); //pfad zu file
     try {
          FileUtils.writeStringToFile(file, test);
          } catch (IOException e1) {
	e1.printStackTrace();
          }

Habs auch schon mit bufferedWriter und einzeln mit filewriter. Immer werden die absätze ignoriert und der text der textdatei einfach hintereinander geschrieben.

Beim einlesen kann ja auch zeile für zeile eingelesen werden, geht das net auch irgendwie beim auslesen? Finde aber keine methode des bufferedwriters dafür.

Danke schonmal.
 
Nee nee, also dieser String test enthält schon den kompletten text, den ich ausgeben will. Da gibts nix mit newline oder so.

ich hab grad mal statt dem

Code:
String test = getRules().getText();

einfach eingefügt:
Code:
String test = "bla" + "\r\n" + "blubb";

Da gibt er mir korrekt den absatz aus.
Bei folgendem aber nicht:

Code:
String test = "bla" + "\n" + "blubb";

Das is echt ärgerlich...
 
dann ersetze doch einfach mit replace("\n","\r\n") vor dem Schreiben in die Datei die Linefeeds durch CarriageReturn + Linefeed
 
hab ich eben auch probiert, klappt trotzdem net, wird einfach verschluckt.
hab jetzt eben den ganzen text aus test in einen StringArray gepackt aber man kann ja die Zeilen net einzeln in die Datei lesen, überschreib ja immer wieder da alte...ich werd noch wahnsinnig. Das is doch bestimmt irgend ein total dummer fehler, weshalb die absätze ignoriert werden.

EDIT: das Replace klappt auch gar net...
Was klappt ist:
Code:
test = test + "hdishdsi";

das hier funzt aber nicht:
Code:
test.replace("\n", "lala");
 
Zuletzt bearbeitet:
Strings sind konstant in Java. Replace ändert nicht den String von dem es aufgerufen wurde, sondern liefert einen neuen String als Returnwert zurück.

text2 = text1.replace("a","b");

text1 bleibt unverändert!
 
Versuchs doch mal mit FileOutputStream, das klappt zumindest bei mir (-:. Hat auch einen Konstruktor mit File-Parameter, sollte du also recht fix einbauen können.

Code:
import java.io.*;
class Sdfa{
	public static void main(String [] args) throws IOException {
		String s = "Hallo Welt!\nTschuess Welt!\n";
		FileOutputStream os = new FileOutputStream("sdfa.txt", true);
		os.write(s.getBytes());
		os.close();
	}
}
Code:
$ javac Sdfa.java && java Sdfa && cat sdfa.txt
Hallo Welt!
Tschuess Welt!
 
zefix, das muss man erstmal wissen. Hatte mir jetzt grad so geholfen, dass ich alles in einen StringArray gepackt habe und neu zusammengewürfelt mit "\r\n", aber jetzt wo ich das weiß, gehts natürlich viel einfacher. Danke!!

@chloe oha, ok, das wäre noch eine möglichkeit. Anscheinend beachtet der FileOutputStream auch "\n" im gegensatz zu bufferedwriter und filewriter...

wundert mich halt, weil der bufferedREADER nämlich "\n" UND "\r\n" beachtet
 
Zuletzt bearbeitet:
Zurück
Oben