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)这个自己的实现吗?