2012-04-06 4 views
0

Ich habe ein kleines Problem, es scheint einfach (persönlich denke ich, es ist), aber ich konnte keine Antwort finden. Aber zumindest weiß ich nicht, wie ich es beheben soll.In txt-Datei schreiben, aber nicht überschreiben

Ich schreibe einige Zeilen in eine TXT-Datei, wenn ich den Knopf Speichern drücke. Dann, wenn ich etwas anderes eintippe und wieder auf Speichern klicke, überschreibt es meine ersten Zeilen.

Aber ich möchte, dass es in einer neuen Zeile schreibt. Wenn ich die App schließe und erneut starte und erneut auf "Speichern" drücke, muss der Text erneut in einer neuen Zeile gespeichert werden.

Also im Grunde: Wie kann ich Text in eine TXT-Datei schreiben, ohne vorherige Zeilen zu überschreiben. Ich kann in eine Datei schreiben, das ist also nicht das Problem, sondern nur wie man NICHT überschreibt.

Dies ist der "kleine" Teil meines Code:

public void Data_save_contacts(View v) { 

     Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); 

     try { 

       writer_contact = new BufferedWriter(new FileWriter(root + "/Save/Contacten.txt")); 
       writer_contact.write("Perceel "+str_boer_teler_nummer+" = "+str_boer_teler); 
       writer_contact.newLine(); 

     } catch (IOException e) { 
      System.err.println(e); 
     } 
} 

Bitte nehmen Sie mich in den guten Richtungen. bereits

Danke, Bigflow

Antwort

3

Sie haben

writer_contact = new BufferedWriter (neue Filewriter (root zu tun + "/Save/Contacten.txt",true));

Genau wie die in Java-Dokumentation:

FileWriter 

public FileWriter(File file, 
       boolean append) 
     throws IOException 

Constructs a FileWriter object given a File object. If the second argument is true, then bytes will be written to the end of the file rather than the beginning. 

Parameters: 
file - a File object to write to 
append - if true, then bytes will be written to the end of the file rather than the beginning 
+0

Ich fühle mich jetzt so dumm ... Aber danke! – Bigflow

+0

Keine Sorge! Froh gewesen, mir geholfen zu haben;) – Ant4res

3

Versuch:

public FileWriter (File file, boolean append) 

setzen die append zu true

0

Nun gegeben dies nur ein wenig von Ihrem Code ist (und ich nehme an, dass Sie es gestückelt aus, um nicht andere Teile zu offenbaren), was ich suspect ist, dass Sie die Datei root + "/Save/Contacten.txt" in einem Nicht-Append-Modus öffnen. Beim ersten Aufruf wird die Datei erstellt und geschrieben. Wenn Sie es später aufrufen, findet es die Datei und erstellt sie neu (oder löscht den Inhalt) und schreibt dann in sie.

Versuchen Sie es mit:

writer_contact = new BufferedWriter(new FileWriter(root + "/Save/Contacten.txt", true)); 

Natürlich ist das erste Mal öffnen/erstellen Sie die Datei, wird es falsch sein wollen (es sei denn, Sie immer schon, wenn die Datei vorhanden ist angehängt werden soll).

Geben Sie das eine Drehung.

0

können Sie überprüfen, ob die Datei beendet wird oder nicht?

oder Sie können auch alte Datei anhängen.

Wenn nicht beendet dann und dann nur neue erstellen.