2009-06-18 48 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 2009-06-18 21:21:53

回答

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 2009-06-18 21:27:50

+0

從技術上講,flush()是缺少的,但close()在任何情況下都是一個好主意。 – 2009-06-18 21:45:15

3

嘗試添加:

file.close(); 

close()方法描述說:

關閉流,首先沖洗它。