比如在操作读写流的时候,其实并不是 close 了才完成,只要在完成所有的 write 操作之后记得加上一个 flush 就可以把缓冲中未写入的数据填入目标流。
而不是 close 才能完成复制
调用close时会调用flush。你可以看一下父类的close方法的实现。
flush() 是把缓冲区的数据强行输出, 主要用在IO中,即清空缓冲区数据,一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。这时候如果你调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。 |