Answers:
从该方法的文档中flush
:
刷新输出流,并强制写出所有缓冲的输出字节。刷新的一般约定是,调用它的指示是,如果先前写入的任何字节已由输出流的实现缓冲,则应立即将这些字节写入其预期的目标。
缓冲主要是为了提高I / O性能。有关更多信息,请参见本文:调整Java I / O性能。
当我们发出任何命令时,该命令的流将存储在计算机中称为buffer(临时存储位置)的存储位置中。当所有临时内存位置已满时,我们使用flush()刷新所有数据流并完全执行它们,并为缓冲区临时位置中的新流提供新的空间。-希望你会明白
BufferedOutputStream
,BufferedWriter
,ObjectOutputStream,
和PrintXXX
类。flush()
任何其他流的方法或Writer
不执行任何操作。
flush()
不需要显式调用。本身执行刷新。BufferedWriter
close()
close()
close()
调用flush()
,因此在FileWriter
不使用缓冲区的情况下调用两者都是多余的。
当您将数据写入流时,不会立即将其写入,而是对其进行缓冲。因此,flush()
当您需要确保所有来自缓冲区的数据都已写入时,请使用。
我们需要确保在关闭流之前完成所有写操作,这就是为什么flush()
在文件/缓冲写程序的中调用的原因close()
。
但是,如果您要求在关闭流之前随时保存所有写入,请使用flush()
。
FilterOutputStream
和FilterWriter
。
如果缓冲区已满,则所有在其上缓冲的字符串都将保存到磁盘上。缓冲区用于避免大宗交易!和开销。
在放在Java库中的BufferedWriter类中,有一行类似:
private static int defaultCharBufferSize = 8192;
如果您确实想在缓冲区已满之前发送数据,则可以控制。只是冲洗它。调用writer.flush()时说:“现在发送缓冲区中的所有内容!
参考书:https : //www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
网页:453