2009-06-18 7 views
0

Okay, helfen ... so einen ziemlich interessanten Fehler Ich habe ... erkläre ich eine Datei mit dem Namen Filewriter, und ich habe es für Schleifen den folgenden durchlaufen:Java Filewriter

for (int i = 0; i < a.radtot; i++) { 
    file.write("" + i * a.rstep); 

    for (int n = 0; n < a.timetot; n++) { 
     file.write("\t " + T[n][i]); 
     System.out.println(T[n][i] + " " + n + " " + i); 
    } 

    file.write("\n"); 
} 

davon am Ende , der Befehl System.out.println druckt, was ich erwarte, aber die Datei schneidet in der Mitte ab ... Wie in, statt alles auszudrucken, was System.out tut ... stoppt es in der Mitte. Weiß jemand zufällig, warum es das tun würde? Mache ich etwas falsch?

+0

Post it to Reddit? : D – CookieOfFortune

Antwort

5

Sie müssen close() auf der FileWriter rufen, wenn Sie mit ihm fertig sind. Dies zwingt dazu, dass alle Ausgaben tatsächlich auf die Platte geschrieben werden (andernfalls könnte es in einem Puffer belassen werden).

for (int i = 0; i < a.radtot; i++) { 
    file.write("" + i * a.rstep); 

    for (int n = 0; n < a.timetot; n++) { 
     file.write("\t " + T[n][i]); 
     System.out.println(T[n][i] + " " + n + " " + i); 
    } 

    file.write("\n"); 
} 
file.close(); // <-- Add this 

(ich nehme an, Sie Ausnahmebehandlung der Kürze halber weggelassen habe, so habe ich das gleiche getan. Die close() gewöhnlich in einem finally Block sein würde, um sicherzustellen, dass es immer ausgeführt wird.)

+0

Danke, das hat funktioniert. – wolfPack88

+0

Technisch gesehen war flush() was fehlte, aber close() ist in jedem Fall eine gute Idee. –

+0

Ja, ich denke, die Javadocs machen das klar (und ich wollte die Antwort nicht durcheinander bringen). –

3

versuchen Sie:

file.close(); 

Die close() Methode Beschreibung sagt:

Schließt den Stream und spült ihn zuerst.

+0

Danke, das hat funktioniert. – wolfPack88