2010-11-24 5 views
2

Ich versuche, eine Zeile zu einer Textdatei mit Java hinzuzufügen. Wenn ich mein Programm ausführe, möchte ich eine einfache Zeile hinzufügen, aber mein Programm entfernt alle alten Daten in der Textdatei, bevor neue Daten geschrieben werden. HierWie fügen Sie eine Textdatei an, anstatt sie in Java zu überschreiben?

ist der Code:

FileWriter fw = null; 
    PrintWriter pw = null; 
    try { 
     fw = new FileWriter("output.txt"); 
     pw = new PrintWriter(fw); 

    pw.write("testing line \n"); 
     pw.close(); 
     fw.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(FileAccessView.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+1

Duplizieren: http://stackoverflow.com/questions/2738448/java-io-how-to-append-to-an- existing-existed-text-file – Poindexter

+2

Aufruf von pw.close(), Aufrufe von fw.close(); –

Antwort

20

ändern diese:

fw = new FileWriter("output.txt"); 

zu

fw = new FileWriter("output.txt", true); 

Siehe javadoc für Details, warum - effektiv die "anhängen" standardmäßig auf false.

Beachten Sie, dass FileWriter nicht generell eine große Klasse zu bedienen ist - ich ziehe FileOutputStream in OutputStreamWriter gewickelt zu verwenden, wie Sie die Zeichencodierung, sondern verwenden angeben kann als Standard-Betriebssystem verwenden. diese

+0

Wow, posted die gleiche Zeit auf die zweite ... Ich habe noch nie zuvor gesehen, dass das passiert. : O – Powerlord

+0

vielen dank, wie kann ich text in die neue zeile – Afzaal

+0

yap ich dachte, wer mache ich accpet: D – Afzaal

6

Wechsel:

fw = new FileWriter("output.txt"); 

dazu:

fw = new FileWriter("output.txt", true); 

Das zweite Argument für FileWriter ‚s constructor ist, ob Sie in die Datei anhängen möchten Sie öffnen oder nicht. Dies bewirkt, dass der Dateizeiger vor dem Schreiben an das Ende der Datei verschoben wird.

1

Verwenden

fw = new FileWriter("output.txt", true); 

Von JavaDoc:

Konstrukten ein Filewriter Objekt gegeben ein File-Objekt. Wenn das zweite Argument wahr ist, werden Bytes in das Ende der Datei geschrieben und nicht in den Anfang.

1

zwei Optionen:

  1. Der harte Weg: die gesamte Datei lesen, dann schreiben plus die neuen Daten.
  2. Die einfache Lösung: Öffnen Sie die Datei in "append" -Modus: new FileWriter(path, true);
+0

Warum würde ich den Schmerz erleiden, wenn ich es auf die harte Tour mache, wenn Sun mir eine einfache Option gibt? (Sagte ich so?) :) –

+0

Im Allgemeinen würden Sie nicht. Ein sadistischer Lehrer könnte es in beide Richtungen tun, nur damit Sie "den leichten Weg" so viel mehr schätzen.Diese Frage ist so einfach, dass sie mit "Hausaufgaben" überschrieben werden könnte. Aber ja, angesichts der Option ... einfach jedes Mal. –

+0

Um Herrn Storer zu verteidigen, ist es gut, auf die harte Art zu wissen, ob es irgendwelche funktionellen Unterschiede vom einfachen Weg gibt, denn es kann Situationen geben, in denen der einfache Weg nicht ausreicht. Wie in diesem Fall, wenn Sie etwas über den Inhalt der Datei wissen müssen, bevor Sie sie schreiben, wie vielleicht müssen Sie eine Zeilennummer oder eine Summe einfügen. – Jay

Verwandte Themen