2011-06-13 70 views
0

我在我的智慧在这里结束。java - PrintWriter与FileWriter和BufferedWriter

我想打印几千行的文件,使用以下:

 BufferedWriter bw = new BufferedWriter(new FileWriter(fileName, true)); 

     PrintWriter pw = new PrintWriter(bw, true); 

文件已经由文本,所以我追加,因此真正的说法,FileWriter的的。

现在在过去的两个小时里,似乎令我困惑的是,大约85-90%的线条被写入文件,而FIRST的10-15%不是。

逻辑上的代码没有什么问题,因为如果我在控制台中打印它,所有行都会打印出来。

我在这里错过了什么吗?

我只在打印完所有输出后才执行pw.close()。

+0

你可以发布一些更多的代码吗?你可以尝试一个pw.flush() - 不知道它是否会有所作为, – Sai 2011-06-13 01:22:00

+0

你的描述中没有任何东西对我来说似乎是错误的。 – MeBigFatGuy 2011-06-13 01:22:16

+0

@Sai,他启用了自动刷新功能。 – mre 2011-06-13 01:23:41

回答

0

在pw.close()之前,也许你应该调用flush()来确保所有的流都被写出来。

+0

我已经试过pw.flush()。我也在PrinterWriter构造函数 – kkudi 2011-06-13 01:24:58

+0

中设置了autoFlush = true,我不明白为什么只有前10%没有被写入,剩下的是。在控制台中,前10%是打印出来的:/ – kkudi 2011-06-13 01:25:18

+0

这看起来很奇怪,也许显示全码? (http://www.java2s.com/Tutorial/Java/0180__File/NestedcreationofFileWriterBufferedWriterandPrintWriter.htm)代码非常简单。 – Jasonw 2011-06-13 01:37:36

1

在每次在代码中写入文件之后,您可能都希望调用手动的.flush()命令,以确保正确写出内容。

这很令人费解,如果问题依然存在,请回复。

希望它有帮助!

干杯, Vern

+0

没有运气:/甚至在每一条打印线 – kkudi 2011-06-13 01:31:16

+0

hm ...这是一个你正在遇到的奇怪问题。关心分享什么操作系统? JDK版本?目标平台版本?您正在使用?也许可能会出现一些怪癖或错误。此外,请分享您遇到问题的部分代码,以便让很多对眼睛可以看一看吗? – Vern 2011-06-13 01:37:11

+0

Java版本“1.6.0_16” Java™SE运行时环境(版本1.6.0_16-b01) Java HotSpot™64位服务器虚拟机(版本14.2-b01,混合模式), Linux tui 2.6。 28-15-generic#52-Ubuntu SMP Wed Sep 9 10:48:52 UTC 2009 x86_64 GNU/Linux – kkudi 2011-06-13 01:40:30