很简单的一个问题,因为我不明白其中的原理,所以希望大家帮我解下惑。
问题:我看完java的io操作后,不太明白为什么OutputStream和Writer抽象类有flush()方法,而InputStream和Reader抽象类没有flush()方法?
InputStream的read 方法,使用零个参数的 read 方法,一次读取一个字节,并将之放入该数组。
OutputStream的wirte 将指定字节写入当前输出流。
read 一次一个字节当然不要flush
wirte 一次多个就要flush
InputStream在read的时候,都是即时读取的,执行完马上就执行IO操作并返回数据。
而OutputStream为了提高效率都不是即时输出的,write会把数据先写到缓存里面,积累够了再一次性做IO输出,所以你虽然write了,但数据还没传出去,flush方法就是强制对buffer里面的内容做IO输出。