缓冲流效率问题

缓冲流效率问题

文件输入流在使用read()方法读取一个文件的时候,每次读取一个字节就要访问
一次硬盘,虽然使用read(byte b[])方法一次读取多个字节,但当读取的文件较
大时,也会频繁的对磁盘操作。
   输入流对象 --read()读取字节--> 磁盘文件
   保存在数组 <-- 返回字节- 磁盘文件
   字节数组 ----写入对应文件 --> 磁盘文件
 
当使用缓冲流的时候,Buffered类初始化时会从创建一个较大的byte数组,
一次性从底层输入流中读取多个字节来填充byte数组,当程序读取一个或
多个字节时,可直接从byte数组中获取,当内存中的byte读取完之后,会
再次用输入流填充缓冲区数组。
	输入流对象 --读取字节--> 磁盘文件
	缓冲流创建的较大byte数组  <-- 返回多个字节填充数组-- 磁盘文件
        byte数组 ---写入程序---> 程序	
        
老师我的理解对吗?
我还是理解不到为什么缓冲流会快,如果使用文件输入流的话,
他在使用read()的时候返回字节保存在数组这步它也可以把保存
的数组容量设大一点呀,那么他也可以装很大的数据。
他这样和缓冲流的数组不就差不多了一样嘛!都是从磁盘文件返回
数据到数组中。
还是说文件输入流在使用read()方法的时候,它从磁盘文件是一个字节
一个字节的返回,就算它是使用read(byte b[]),它也是一个字节一个字节
的返回到这个数组中,这样和磁盘的交互就增大。时间也消耗更大。
而使用缓冲流的时候,无论缓冲流对象使用read()或者read(byte b[])的时候,
磁盘都是一次返回能够填满对象的字节,read()就返回一个数据的字节,
read(byte b[])就返回这个数组所能容纳的最大字节数。
是这样嘛?


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,缓冲流是读取字符,而文件输入流的read()方法读取的从此输入流中读取一个数据字节。字符读取的速度比字节读取的速度快,所以使用缓冲流效率比较高。

祝:学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师