2009-06-18 3 views
0

Хорошо ... так что у меня есть довольно интересная ошибка ... Я объявить FileWriter называется файл, и я его пройти через следующие за петли: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"); 
} 

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

+0

Опубликовать его в Reddit? : D – CookieOfFortune

ответ

5

Вы должны позвонить 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 блоке, чтобы убедиться, что он всегда будет работать.)

+0

Спасибо, это сработало. – wolfPack88

+0

Технически говоря, флеш() был тем, чего не хватало, но close() - это хорошая идея в любом случае. –

+0

Да, я думаю, что Javadocs делают это ясно (и я не хотел загромождать ответ). –

3

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

file.close(); 

close() описание метод говорит:

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

+0

Спасибо, это сработало. – wolfPack88

Смежные вопросы