bufferedinputstream也需要指定一个数组长度呀?
2016-12-26 15:56
288 查看
它的缓存和你自己的缓存不是一个概念。大概流程如下。
使用不带缓存的inputstream时
每次你读取时,系统执行读取操作把数据读出来,你指定读一个字节那就读一个字节,指定一个数组那就读一个数组的,你的程序和数据的读取效率有非常大的关系。
而使用bufferedinputstream时,是这样的
当你创建bufferedinputstream,后他会立即去读数据然后放到jvm管理的内存里,
每次你读取时,他不会再去系统中读取,会去内存中读取数据,之后再判断内存中剩的还多不,不多就再由它去指挥系统读取操作,不论你是读一个字节还是一个数组,系统都不一定会去操作硬盘。
你的程序和数据读取的效率关联就非常微小了。
换个角度想,
如果你用不带buffer的流,打开文件然后立即关闭,系统不会有任何数据调用,关闭会很快执行。
而你用带buffer的流打开文件,哪怕没读取就立即执行关闭了,这个关闭也不会立即执行,而且系统也已经把一部分数据读取的内存了,会比用不带buffer的效率低。
使用不带缓存的inputstream时
每次你读取时,系统执行读取操作把数据读出来,你指定读一个字节那就读一个字节,指定一个数组那就读一个数组的,你的程序和数据的读取效率有非常大的关系。
而使用bufferedinputstream时,是这样的
当你创建bufferedinputstream,后他会立即去读数据然后放到jvm管理的内存里,
每次你读取时,他不会再去系统中读取,会去内存中读取数据,之后再判断内存中剩的还多不,不多就再由它去指挥系统读取操作,不论你是读一个字节还是一个数组,系统都不一定会去操作硬盘。
你的程序和数据读取的效率关联就非常微小了。
换个角度想,
如果你用不带buffer的流,打开文件然后立即关闭,系统不会有任何数据调用,关闭会很快执行。
而你用带buffer的流打开文件,哪怕没读取就立即执行关闭了,这个关闭也不会立即执行,而且系统也已经把一部分数据读取的内存了,会比用不带buffer的效率低。
相关文章推荐
- 编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组
- js实现生成一个指定长度为n且随机不重复的数组
- 创建一个新数组并指定数组的长度
- JS 将一个数组按指定长度分割,组成一个新的数组集合
- (KMP 1.4)hdu 3746 Cyclic Nacklace(使用next数组来求循环节的长度——求一个字符串需要添加多少个字符才能使该字符串的循环节的个数>=2)
- js一个数组变为指定长度的多个数组
- JAVA获得一个数组的指定长度的排列
- 算法习题45:对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一;;;一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- php把一个字符串分割成字符数组(可以用参数指定数组每个元素字符的长度)
- 在java中怎么样从一个集合中截取一定长度的元素放到一个新集合中,不是数组哦!。
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 【转】产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写
- 产生一个int数组,长度为10,并向其中随机插入1-10,并且不能重复
- 用c# 产生一个 int 数组 长度为100,并向其中随机插入 1-100 ,并且不能重复
- 将字符串按指定长度换行的一个C#方法
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。自己写的算法
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 长度为0的数组只用在结构体的最后一个成员,用以做一个地址标记,以后用。
- C语言中如何求任意一个int型数组的长度?