Hi, ich hab ein kleines Java-Problem und bin hier auf dieses Forum gestoßen.
Bin gerade dabei ein Programm zu schreiben, welches eine Textdatei ausgibt.
Soll ungefähr SO aussehen:
[...]
; Name: Arno Nym
; Alter: 30
; GEb.Datum: 12.01.1980
; Akt.Datum: 12.05.2010
; Info:
; - Hier steht ein Infotext
Mein Programm liest aus verschiedenen Textfeldern Werte aus, und schreibt sie dann in die Textdatei.
Jetzt möchte ich aber evtl einen zweiten "Infotext" anhängen, ohne dass mein erste überschrieben wird. Allerdings MUSS NICHT zwingend ein Infotext vorhanden sein.
Java:
FileReader input =newFileReader("standardsop.sop");FileWriter output =newFileWriter(Aktionen.soppfad +Aktionen.sopname + filewritername);BufferedReader reader =newBufferedReader(input);BufferedWriter writer =newBufferedWriter(output);String line = reader.readLine();StringName="; Name:";//[…]StringInfo="; Info:";if(line.equals(Name)){ProgNr=ProgNr.replaceFirst("; Name: ","; Name: "+Output.tf_name.getText());
writer.write("; Name: "+Output.tf_name.getText());}elseif(line.equals(Info)){
writer.write("; Info:");
writer.newLine();if(!line.startsWith("; : ")){
writer.newLine();System.out.println("ich weiß nicht wann das hier eintritt");
writer.write("; : "+Output.tf_Revision.getText());Output.tf_Revision.setText("");}}else{
writer.write(line);}
writer.newLine();
line = reader.readLine();
Mit diesem code wird der alte Infotext überschrieben. Ich will aber, dass es SO aussieht:
[...]
; Name: Arno Nym
; Alter: 30
; GEb.Datum: 12.01.1980
; Akt.Datum: 12.05.2010
; Info:
; - Hier soll ein Infotext stehen
; - Hier steht auch noch mein NEUER Infotext[...]
entweder Du liest zuerst die Datei aus und schreibst den Inhalt neu raus.
Oder Du verwendest sowas wie FileOutputStream, damit ist es möglich Daten an den bestehenden Inhalt einer Datei anzuhängen.
WIE überprüfe ich, ob in einer Zeile etwas steht (Vorsicht, am Zeilenanfang steht IMMER ein ';'!)
Wenn false, schreibe die zeile,
Wenn true, schreibe in die nächste Zeile. (evtl in einer schleife abfragen, da auch mehrere Infozeilen existieren können)
An einen bestehende Datei etwas anhängen? --> FileOutputStream im append Modus
Aus einer bestehenden Datei einzelne Zeilen beibehalten und andere Überschreiben bzw. neue ergänzen? --> Datei auslesen und das merken bzw. in die neue Datei schreiben was übernommen werden soll
Aus meinem Programm werden jetzt Textfields ausgelesen, und die TxtDatei mit den Werten ergänzt.
mit folgendem Code:
Code:
String Name = "; Name:";
//...
if (line.equals(Name)) {
ProgNr=ProgNr.replaceFirst("; Name: ","; Name: " + Output.tf_name.getText());
writer.write("; Name: "+Output.tf_name.getText());
}
Mit DIESEM Code hänge ich meine Infozeile an.
Code:
String Info = "; Info:";
if (line.equals(Info)) {
writer.write("; Info:");
if (!Output.tf_Info.equals("")){
writer.newLine();
writer.append("; : "+Output.tf_Info.getText());
Output.Tf_Info.setText("");
}
Wenn ich mein Programm jetzt nochmal ausführe, ist ja bereits eine Infozeile vorhanden.
Diese wird bei mir immer mit der neuen Infozeile überschrieben - nicht "als neue Zeile angehängt"
Verstanden? Sorry wenn ich mich nicht klar genug ausdrücke.