【问题标题】:How to ensure prompt output to the file with BufferedWriter?如何确保使用 BufferedWriter 及时输出到文件?
【发布时间】:2019-02-16 13:08:18
【问题描述】:

我在 while 循环中写入一个文本文件:

BufferedWriter writer = new BufferedWriter("...");
BufferedReader reader = new BufferedReader("...");

while((line = reader.readline()) != null){
    ....
    writer.write(line + "\n");
}

reader.close();
writer.close();

此代码不会在处理完每一行后立即将行写入文件。我希望在每次迭代中将该行写入文件。如何做到这一点?

【问题讨论】:

  • 可能是flush 吗?但是如果你不想要Buffered,为什么要使用BufferedWriter
  • 那你为什么要使用缓冲写入器呢?如果您不想缓冲输出,只需使用 FileWriter
  • 与 FileWriter 相比,“缓冲”究竟是什么意思以及何时使用它?

标签: java bufferedwriter


【解决方案1】:
  1. writer(line + "\n"); 不是一个存在的方法。 writer 是 BufferedWriter 对象的名称。您需要添加方法调用以使用 writer.println("...");

  2. 打印输出
  3. 在使用 IO 时,应将代码括在 try-catch 子句中以防止 IOExceptions

  4. 更简单的方法是使用 PrintWriter 而不是 BufferedWriter。

【讨论】:

  • 在while循环中,BufferedWriter会更高效吗?还是不行?
  • 输入应该仍然是一个 BufferedReader,但由于 while 循环,输出没有什么不同
  • BufferedWriter不是在多次迭代中积累数据,节省了大量的写入操作吗?所以你的意思是在一个典型的while循环中,不应该使用BufferedWriter?
  • 根据链接,BuffereWriter 效率更高,但PrinterWriter 提供更多方法? BufferedWriter 在while循环中保存磁盘写入?
猜你喜欢
  • 2018-05-31
  • 1970-01-01
  • 2012-05-18
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多