java中BufferedInputStream类相比InputStream类,提高了输入效率,增加了输入缓冲区的功能,请解释下,...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中BufferedInputStream类相比InputStream类,提高了输入效率,增加了输入缓冲区的功能,请解释下,...相关的知识,希望对你有一定的参考价值。

java中BufferedInputStream类相比InputStream类,提高了输入效率,增加了输入缓冲区的功能,请解释下,谢谢。

这个缓冲区的概念比较抽象,其实这么说就明白了
不带缓冲的操作,每读一个字节就要写入一个字节,由于涉及磁盘的IO操作相比内存的操作要慢很多,所以不带缓冲的流效率很低
带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里。等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多
参考技术A 将一个池子的水抽到另一个池子,inputstream就相当于这两个池子中只有一根管子,传输速率都已经限制了,而bufferedinputstream就相当于在管子中间加了一个缓冲部分,或者是一个动力系统,可以加速抽水的速度,,,,,,想想那个cpu有缓存,效果原理一样

java中讲讲BufferedInputStream的用法,举例?

2.3 BufferedInputStream的用法 (视频下载) (全部书籍)
马克-to-win:BufferedInputStream 顾名思义就是它有一个内部的buffer(缓存),它的read方法表面上看,虽然是只读了一个字节,但它是开始时猛然从硬盘读入一大堆字节到自己的缓 存,当你read时,它是从缓存读进一个字节到内存。而前面讲的FileInputStream字节流,read时,都是真正每个字节都从硬盘到内存,是 很慢的。为什么?请研究硬盘的结构!下面的两个例子,一个是FileInputStream的read生读进来的,另一个是BufferedInputStream的只能read,你比较一下读的时间,差距蛮大的!
例:2.3.1

import java.io.*;
public class TestMark_to_win {
    public static void main(String args[]) throws FileNotFoundException,
            IOException {
        FileInputStream fis = new FileInputStream("c:/2.txt");
        long t = System.currentTimeMillis();
        int c;
        while ((c = fis.read()) != -1) {}
        fis.close();

 

详情黏贴以下网址在地址栏后请进:

http://www.mark-to-win.com/index.html?content=JavaBeginner/javaUrl.html&chapter=JavaBeginner/JavaBeginner8_web.html#HowBufferedInputStreamWorkWhyFast













以上是关于java中BufferedInputStream类相比InputStream类,提高了输入效率,增加了输入缓冲区的功能,请解释下,...的主要内容,如果未能解决你的问题,请参考以下文章

BufferedInputStream类和BufferedOutputStream类

java中讲讲BufferedInputStream的用法,举例?

深入研究BufferedInputStream内幕

Java IO BufferedInputStream 和 BufferedOutputStream

java.io.IOException:BufferedInputStream 已关闭

bufferedinputstream FileInputStream inputstream的比较