当前位置: 代码迷 >> J2SE >> BufferedInputStream这种用法了解不能
  详细解决方案

BufferedInputStream这种用法了解不能

热度:232   发布时间:2016-04-23 19:48:47.0
BufferedInputStream这种用法理解不能
BufferedInputStream bis = null;
byte[] buffer = new byte[1024];
try {
    bis = new BufferedInputStream(new FileInputStream("E:" + File.separator + "demo.txt"));
    int i = 0;
    while ((i = bis.read(buffer)) != -1) { 
    System.out.print(new String(buffer, 0, i));
    }
}

BufferedInputStream中的read(byte[] b)继承自FilterInputStream,FilterInputStream中的read(byte[] b)直接调用的FileInputStream中的read(byte[] b),而这个方法是直接从底层流读取数据的,不是从缓冲区中,所以我觉得这种写法并没有提高性能,但是在很多demo中经常看到这么写的,是真的有问题还是我理解错了呢?
------解决思路----------------------
你去看源码  不是继承  是覆盖FilterInputStream中的方法
------解决思路----------------------
FilterInputStream的read方法是这个 
public int read(byte b[]) throws IOException {
        return read(b, 0, b.length);
    }
这个运行时候不是调用的
BufferedInputStream中的public synchronized int read(byte b[], int off, int len)这个自己的实现吗?