A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 史政法 中级黑马   /  2013-5-23 09:41  /  1533 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 史政法 于 2013-5-23 17:19 编辑

有缓冲区也是一个一个或一组一组的读写,没有缓冲区也是一个一个一组一组的读写,缓冲区到底有啥用啊?

加了缓冲区有什么好处?

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

6 个回复

倒序浏览
IO流中,如果没有缓冲区的话,好像只能一个一个读吧,例如InputStream只能用read(),一个一个字节读吧
如果用缓冲区的话,例如用BufferInputStream,可以用readLine(),整行整行的读,效率更高吧
回复 使用道具 举报
谢孔营 发表于 2013-5-23 09:44
IO流中,如果没有缓冲区的话,好像只能一个一个读吧,例如InputStream只能用read(),一个一个字节读吧
如果 ...

不是,能直接读写一组
回复 使用道具 举报
史政法 发表于 2013-5-23 09:47
不是,能直接读写一组

那是因为从流中写到数组中,是一个一个的写吧,然后把数组写满,把数组打印出来,看起来是一组,其实往数组中写,是一个一个的吧
回复 使用道具 举报
史政法 发表于 2013-5-23 09:47
不是,能直接读写一组

   不是的 不调用缓冲区  是一次读一个写一个的。   缓冲区其实就是多了一个数组,一次读好多个都存到这个数组里面去,然后一次写出一个数组的数据。  可以提高效率
回复 使用道具 举报
看BufferedReader中的介绍:
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
另外,还封装了readLine方法 方便使用。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
陈雨 中级黑马 2013-5-23 12:29:27
7#
本帖最后由 陈雨 于 2013-5-23 12:31 编辑

当时看视频时,记得老毕有说过:
数据储存在硬盘上时,当你操作数据时,硬盘上的数据会被一个一个扫描,如果没有缓冲区,在硬盘上读一个,那么硬盘的指针就要去另外一个目的地写一个,这样速度会很慢;如果有了缓冲区在硬盘上读的数据可以暂时存在缓冲区,然后再从缓冲区一次性写到目的地,这样提高了效率。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马