Frage

Okay ... so habe ich einen ziemlich interessanten Fehler ... Ich erkläre, einen Datei mit dem Namen Filewriter, und ich habe es für Schleifen des folgend durchlaufen:

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");
}

Am Ende, die System.out.printin Befehl druckt, was ich erwarten, dass es, aber die Datei abschneidet auf halbem Weg ... Wie in, statt den Ausdruck alles System.out tut ... es hält die Mitte. Hat jemand zufällig weiß, warum es das tun würde? Mache ich etwas falsch?

War es hilfreich?

Lösung

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

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 gehe davon aus 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.)

Andere Tipps

Versuchen Sie fügt hinzu:

file.close();

Die close() Methode Beschreibung sagt:

  

Schließt den Stream, es erste Spülung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top