黑马程序员技术交流社区
标题:
IO流中的缓冲区提高读写效率的原理是什么?
[打印本页]
作者:
HelloWorld!
时间:
2014-12-11 07:49
标题:
IO流中的缓冲区提高读写效率的原理是什么?
以操作文件的流对象为例,字符输入流缓冲区BufferedReader和字符输入流FileReader的区别就是多了个一次读取一行的方法readLine();都有读一个字符和读字符数组的方法;字符输出流缓冲区BufferedWriter比字符输出流FileWriter多了个换行方法newLine();都有写入字符和写入字符数组的方法。字节输入输出流缓冲区和字节输入输出流的方法是一样的,都是读写字符和读写字符数组。既然读写的方法是一样的,那么读写时调用系统资源的次数应该也是一样的,那么缓冲区提高读写效率的原理是什么?求解答
作者:
不淡定,小学生
时间:
2014-12-11 08:40
设置缓冲,CPU通常会使用 DMA 方式去执行 I\O 操作。CPU 将这个工作交给DMA控制器来做,自己腾出时间做其他的事,当DMA完成工作时,DMA会主动告诉CPU“操作完成”。这时,CPU接管后续工作。在此,CPU 是被动的。DMA是专门 做 I\O 与 内存 数据交换的,不仅自身效率高,也节约了CPU时间,CPU在DMA开始和结束时做了一些设置罢了。
总的来说,缓冲区就是内存里的一块区域,把数据先存内存里,然后一次性写入,类似数据库的批量操作,这样效率比较高。
作者:
擒贼先擒王
时间:
2014-12-11 09:02
同意二楼的见解,顶一下!!!
作者:
与梦逆风而行
时间:
2014-12-11 09:17
额 刚学完基础 这个问题暂时还没法解答,但是比较同意二楼的观点。
作者:
GlobeMaster
时间:
2014-12-11 09:28
刚开始学习,谢谢各位的意见。
作者:
fatesabering
时间:
2014-12-11 12:20
缓冲区读写流的内部封装了数组,读写时并不是一个字节读完再在另一个位置存储,而是先读一堆字符到内存数组中,这样就避免了硬盘上的来回读写,变成了内存和硬盘间的读写 提高了读写的效率
作者:
zmhlnrs
时间:
2014-12-11 12:22
过来学习一下
作者:
魏文杰
时间:
2014-12-11 12:26
我也来看看这个问题。。。。菜鸟一枚
作者:
qowoeo7538
时间:
2014-12-11 12:26
刚刚入门,还没看,学习下。
作者:
史云龙
时间:
2014-12-11 13:16
从内存向硬盘或者其他位置做连接,花费的时间比较长,频繁的交换会导致产生大量错误交换时间。
而将数据缓冲到内存中,到时批量输出,减少了频繁交换,自然就提高了效率。
作者:
沙子
时间:
2014-12-11 13:35
2楼的观点有说服力啊,刚学到还未深入了解,同学习。
作者:
________倔強°
时间:
2015-7-21 01:58
好,及时解决了我的疑问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2