比如字符缓冲输出流中加入flush(),和不加入flush()有什么区别吗?
同样的打印流中的println()实现的自动刷新有什么实际的意义吗?对这个有点不是很理解,希望有大神可以帮忙解惑,不胜感激!
java在使用流时,都会有一个缓冲区,按一种它认为比较高效的方法来发数据:把要发的数据先放到缓冲区,缓冲区放满以后再一次性发过去,而不是分开一次一次地发.
而flush()表示强制将缓冲区中的数据发送出去,不必等到缓冲区满.
所以如果在用流的时候,没有用flush()这个方法,很多情况下会出现流的另一边读不到数据的问题,特别是在数据特别小的情况下.
字符输出流在输出内容的时候,比如写文件的时候,是先写入缓冲区,当缓冲区满之后再写入文件,如此往复,但是当某次输出比如在最后输出的内容不能填满一个缓冲区,那么就会一直等待,所以这时需要进行强制写入文件,将缓冲区内容清空到文件中