2009-06-18 65 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()方法描述说:

关闭流,首先冲洗它。