2012-05-29 4 views
7

OK, ich habe einige Probleme, mehrere Zeilen in eine Textdatei zu schreiben.Probleme mit Dateiwriter, die Dateien überschreiben, anstatt an das Ende anzuhängen

das Programm läuft, aber es wird keine neuen Linien jedes Mal

verwenden, wenn ich es 4 mal ausgeführt werden soll, die Textdatei sollte wie folgt aussehen:

a 
b 
c 
d 

statt, es sieht aus wie:

d 

Wer weiß, wie Sie dieses Problem beheben können? Alle Importe werden korrekt importiert.

Quelle (es ist leicht editiert, definiert alles übernehmen richtig):

import java.io.*; 
public class Compiler { 
public static void main (String args[]) throws IOException 
{ 
    //there's lots of code here 
    BufferedWriter outStream= new BufferedWriter(new FileWriter("output.txt")); 
    outStream.newLine(); 
    outStream.write(output); 
    outStream.close(); 
} 

} 
+1

Nur eine Warnung, aber das ist gefährlich nah an einer Frage "Was ist der Code?". Da Sie jedoch nicht einfach um Hilfe gebeten haben (Sie haben gezeigt, was Sie bisher getan haben), werde ich ein Auge zudrücken. –

Antwort

15

Stellen Sie sicher, dass, wenn Sie eine Instanz eines FileWriter schaffen, dass Sie am Ende davon anhängen. Dies kann unter Verwendung von this specific FileWriter constructor erfolgen, was einen zusätzlichen boolean als zweiten Parameter erfordert. Diese boolean teilt die FileWriter an das Ende der Datei anhängen, anstatt die Datei zu überschreiben.

BufferedWriter outStream= new BufferedWriter(new FileWriter("encoded.txt", true)); 
+0

Ich bin ein wenig neu zu den Ein- und Ausgaben von Java, also könnte ich ein Beispiel bekommen? Ich bin momentan nicht ideal zum Testen (kein JDK oder IDE auf dieser Workstation) – Azulflame

+1

Meine Antwort enthält bereits die Änderungen, die Sie anwenden sollten, damit dies funktioniert. –

+0

Ich schrieb das, wenn es keinen Code darin gab. Danke für die Antwort. – Azulflame

2

Standardmäßig überschreibt FileWriter die Datei. Was möchten Sie vielleicht zu tun ist, den Leser auf die folgende Weise definieren:
new FileWriter("encoded.txt", true)
Auf diese Weise wird die Datei - angehängt werden, anstatt dass sie überschrieben.

Hoffe, das hilft!

0

Ich bin mir nicht sicher, was dieser Code tun soll. Es wird ein Fehler ausgegeben, wenn Ihre Eingabezeichenfolge mehr als ein Zeichen lang ist, da Sie Ihren FileWriter innerhalb der Schleife schließen und dann erneut versuchen, darauf zu schreiben.

Ich interpretiere Ihre Frage folgendermaßen: Sie fragen sich, warum nur die letzte Ausgabe in der Datei enthalten ist. In diesem Fall liegt das daran, dass Sie Ihren FileWriter nicht im Append-Modus erstellt haben. Sehen Sie sich die verschiedenen Konstruktoren an, die für FileWriter verfügbar sind, und verwenden Sie die Datei, die Sie an die Datei anhängen können.

Verwandte Themen