缓冲流效率问题
文件输入流在使用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[])就返回这个数组所能容纳的最大字节数。 是这样嘛?
11
收起
正在回答
1回答
同学你好,缓冲流是读取字符,而文件输入流的read()方法读取的从此输入流中读取一个数据字节。字符读取的速度比字节读取的速度快,所以使用缓冲流效率比较高。
祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星