【问题标题】:java - PrintWriter with FileWriter and BufferedWriterjava - 带有 FileWriter 和 BufferedWriter 的 PrintWriter
【发布时间】:2011-06-13 01:17:29
【问题描述】:

到此为止,我已经束手无策了。

我正在尝试在一个文件中打印几千行,使用以下内容:

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

        PrintWriter pw = new PrintWriter(bw, true);

该文件已经包含文本,所以我在 FileWriter 中附加了真正的参数。

最近两个小时让我感到困惑的是,大约 85-90% 的行被写入文件,而前 10-15% 没有。

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

我错过了什么吗?

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

【问题讨论】:

  • 你能再贴一些代码吗?你可以试试 pw.flush() —— 不确定它是否会有所作为,
  • 你的描述对我来说没有任何问题。
  • @Sai,他启用了自动刷新。
  • 我试过 pw.flush() 但没有用。代码很长。我不确定它会有什么帮助。
  • 不看代码就想不出别的了。我假设代码中没有抛出异常或错误。

标签: java filewriter printwriter bufferedwriter


【解决方案1】:

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

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

希望对您有所帮助!

干杯, 维恩

【讨论】:

  • hm ...这是您遇到的一个奇怪的问题。关心分享什么操作系统? JDK版本?目标平台版本?您正在使用?也许可能有一些怪癖或错误。另外,是否愿意分享您遇到问题的代码段,以便多双眼睛可以看到它?
  • java version "1.6.0_16" Java(TM) SE Runtime Environment (build 1.6.0_16-b01) Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode), Linux tui 2.6.28-15-generic #52-Ubuntu SMP Wed Sep 9 10:48:52 UTC 2009 x86_64 GNU/Linux
  • 我觉得不错。这与我所拥有的版本大致相同,并且我没有您报告的问题或错误。愿意分享代码以便我们提供帮助吗?
【解决方案2】:

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

【讨论】:

  • 我已经尝试过 pw.flush()。我还在 PrinterWriter 构造函数中设置了 autoFlush=true
  • 我不明白的是为什么只有前 10% 没有写,其余的都是。虽然在控制台中打印了前 10%:/
  • 这看起来很奇怪,也许显示完整代码? (java2s.com/Tutorial/Java/0180__File/…) 代码相当简单。
猜你喜欢
  • 1970-01-01
  • 2011-08-11
  • 2012-09-03
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 2012-12-13
相关资源
最近更新 更多