i2i*_*eya 29 java flush stream filewriter
我有一个问题,在写入文件时,在关闭之前,我们应该包括flush()?? 如果是这样它会做什么呢?不流自动冲洗?编辑:
那么冲洗它实际上做了什么?
Car*_*icz 22
写入器和流通常会将一些输出数据缓冲在内存中,并尝试一次将其写入更大的块中.刷新将导致从缓冲区立即写入磁盘,因此如果程序崩溃,则数据不会丢失.当然不能保证,因为磁盘可能不会立即物理写入数据,因此它仍然可能丢失.但那不会是Java程序的错:)
当您编写行尾时,PrintWriters会自动刷新(默认情况下),当然,当您关闭它们时,流和缓冲区会刷新.除此之外,只有当缓冲区已满时才会刷新.
Ale*_*yak 21
我强烈建议在关闭之前调用flush.基本上它将剩余的缓冲数据写入文件.
如果你flush
明确地打电话,你可能会确定任何IOException
出现的close
都是灾难性的并且与释放系统资源有关.
当您flush
自己时,您可以IOException
像处理数据写入异常一样处理它.
Ben*_*enj 13
您不需要执行刷新,因为close()将为您执行此操作.
来自javadoc:
"关闭流,首先刷新它.一旦流关闭,进一步的write()或flush()调用将导致抛出IOException.然而,关闭先前关闭的流没有任何效果."