Справка по Java FileWriter - PullRequest
0 голосов
/ 19 июня 2009

Хорошо ... Итак, у меня довольно интересная ошибка ... Я объявляю FileWriter с именем file, и у меня он проходит через циклы:

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

В конце этого команда System.out.println печатает то, что я ожидаю, но файл обрезается на полпути ... Как, вместо того, чтобы распечатывать все, что делает System.out ... он останавливается в середина. Кто-нибудь знает, почему он это делает? Я что-то не так делаю?

Ответы [ 2 ]

5 голосов
/ 19 июня 2009

Вам нужно позвонить close() на 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");
}
file.close(); // <-- Add this

(я предполагаю, что для краткости вы опускаете обработку исключений, поэтому я сделал то же самое. close() обычно находится в блоке finally, чтобы обеспечить его постоянную работу.)

3 голосов
/ 19 июня 2009

Попробуйте добавить:

file.close();

Описание метода close() гласит:

Закрывает поток, сначала сбрасывая его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...