对于printwriter对象,flush的用途是什么?

Gup*_*ill 5 java io printwriter

我正在寻找理论分析.我的意思是,缓冲系统如何工作以及使用flush提供什么优势?如果可能的话,请举例说明.

Jon*_*ica 8

当您写入文本文件时,BufferedWriter不会立即将其写入磁盘.相反,它将数据保存在内存中的缓冲区中.

这样做的好处是许多小写将进入缓冲区,然后数据将一次写入磁盘,即.用一个大写,而不是许多小写,这将是低效的.

当缓冲区已满时,BufferedWriter将自己写出数据,即.它会像flush()缓冲区已满时调用一样.

那么什么时候应该flush()手动打电话?

  • 当您需要数据现在在磁盘上时.如果你有一个程序在写入磁盘的同时从磁盘上的文件中读取数据,你可能需要确保所有应该在磁盘上的数据实际存在.

  • 如果您是通过网络连接进行写入,则可能需要调用flush()以便立即通过网络发送数据.

通常没有必要打电话flush().只要写并调用close()完成后,并没有必要flush()close()刷新缓冲区为您服务.