黑马程序员技术交流社区

标题: 流和缓冲区的区别 [打印本页]

作者: asinzuo    时间: 2015-8-12 17:28
标题: 流和缓冲区的区别
字符流输出时,是不是都先把数据写在流里(写在内存里),然后在刷新到硬盘?
这样的话,字符流缓冲区也是先读到内存里,然后再写出去。缓冲区的作用体现在哪呢?
字节流是直接读一个写一个不需要刷新?字节流加里缓冲区了,又体现在什么地方?


作者: 樊佰轩    时间: 2015-8-12 17:28
缓冲区最大的作用就是为了提高读写效率。
我的理解是:程序在读取文件内容时,是需要不断的打开和关闭文件的。这这是耗费时间最多的地方,使用缓冲区,可以在一次有效的打开关闭文件的时间内执行读写更多的数据。
如果没有缓冲区,可能需要执行的操作是查找硬盘文件,打开文件,读取一个字节或字符,写入内存,关闭文件。打开内存,读出一个字节或字符,打开目的文件,写入一个字节或字符,关闭文件和内存。为了一个字符需要操作这么多步骤不是更浪费时间么。
这是我个人的理解,不恰当的地方请各位大神当面指出,给我一次学习的机会。谢谢。
作者: 肖天长    时间: 2015-8-12 20:24
我自己理解的:
缓冲区是为了提高读写效率,用字符流时写的数据都在流里需要刷新,字符流缓冲区则是写到缓冲区里,缓冲区可以写一行和读一行,不用每次都读一个写一个,并且不用new数组,这就是作用。
电脑底层操作的都是字节数据,所以用字节流是不需用刷新的,字节流缓冲区的作用也是可以读一行写一行
作者: boboyuwu    时间: 2015-8-12 22:20
缓冲区的作用就是你直接调用,类直接帮你封装好的,不用每次你自己开辟,当然你自己开辟一片缓冲区是一样的                缓冲区作用就是你定义多大读满了一次性存入或者输出
作者: backin    时间: 2015-8-14 21:59
简单点就是缓冲池,我理解的是缓冲就像一个池塘,流呢就是水龙头,缓冲的时候就可以源源不断的读写数据,而水龙头不行吧!{:2_40:}
作者: 三分之一    时间: 2015-8-17 16:39
backin 发表于 2015-8-14 21:59
简单点就是缓冲池,我理解的是缓冲就像一个池塘,流呢就是水龙头,缓冲的时候就可以源源不断的读写数据,而 ...

说的很形象,赞一个~
作者: l_15562009298    时间: 2015-8-19 10:40
流就好像一个管道,池就像储存流文件的水塘;

作者: liuguodong    时间: 2015-8-24 22:54
缓冲区内的流数据输出速率要比普通流内的数据速率要高




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2