关于BufferedInputStream和FileInputStream中Read方法的问题

来源:互联网 发布:pdf.js跨域请求file 编辑:程序博客网 时间:2024/05/22 00:05
BufferedInputStream的实现中有一个用于存储数据的内部缓冲区数组:protected volatile byte[] buf。这个缓冲区数组的作用在于对源进行数据块访问,而不是一字节一字节的访问,也就是进行一次I/O将一块数据存到缓冲区中,再从缓冲区中read,当缓冲区为空时再重新读新的数据块。这个数组是jdk里的BufferedInputStream类的实现里的,是作为BufferedInputStream的成员变量的,不是指read方法参数里的byte[]数组,read方法参数的byte数组只是read到的字节存到哪,完全不是一个概念。至于效率,在理解了缓冲区的概念后就好理解了。FileInputStream的read方法由于没有缓冲区的支持,只能每次read都对源进行I/O,频繁I/O是比较麻烦的,所以效率肯定没有BufferedInputStream的read方法快。
0 0