java中缓存流和缓存区

img


如图,为什么已经使用缓存流了,还需要自己定义一个缓存区

是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。
IO流就是以流的方式进行输入输出。
缓冲流是IO流的一种类型。

缓冲流的实现方式,把数据从原始流成读入或者把数据积累到一个大数据后再成批写出。

注意这里的块:

  1. 首先流是无结构的字节序列或者字符序列,所以块的数据结构选 byte[]
  2. 其次成块的读入,累积大一个大数据快再写出。块的大小由用户决定
  3. 最后这个块的内存空间需要用户开辟并将地址传给操作系统。对于读取场景,这样操作系统读取数据后写到这块内存空间;对于写入场景,用户将数据写入缓冲后,将缓冲的内存地址传给操作系统,操作系统成批的输出。

回到问题 为什么已经使用缓存流了,还需要自己定义一个缓存区。
使用缓存流指定了IO流的类型,但是数据块(缓冲区)的内存空间需要用户向操作系统申请并设置大小然后当作参数传给操作系统。

x 相当于一个容器,是将读取的数据放入 x 数组中,然后再将该数组的数据写入到目标文件

流就是一个通道,byte是经过通道的东西。