首页技术文章正文

字节流缓冲【Java培训】

更新时间:2022-08-19 来源:黑马程序员 浏览量:

  I/O提供两个带缓冲的字节流,分别是BufferedInputStream和BufferedOutputStream,它们的构造方法中分别接收InputStream和OutputStream类型的参数作为对象,在读写数据时提供缓冲功能。应用程序、缓冲流和底层字节流之间的关系如图7-22所示。

1660878934779_应用程序、缓冲流和底层字节之间的关系.jpg

  图7-22 应用程序、缓冲流和底层字节之间的关系

  从图7-22中可以看出,应用程序是通过缓冲流来完成数据读写的,而缓冲流又是通过底层的字节流与设备进行关联的。

  下面通过一个案例来学习BufferedInputStream和BufferedOutputStream这两个流的用法。首先在Java项目的根目录下创建一个名称为src.txt的文件,并在该文件中随意写入一些内容;然后创建一个类,在类中使用FileOutputStream创建文件des.txt,并使用字节流缓冲对象将文件src.txt中的内容复制到文件des.txt中,如文件7-15所示。

  文件7-15 Example14.java

import java.io.*;
public class Example14 {
    public static void main (String[] args) throws Exception {
        // 创建一个带缓冲区的输入流
        BufferedInputStream bis = new BufferedInputStream (new
                       FileInputStream ("src.txt")) ;
        // 创建一个带缓冲区的输出流
        BufferedOutputStream bos = new BufferedOutputStream (
                  new FileOutputStream ("des.txt")) ;
        int len;
        while ((len = bis.read()) != -1) {
            bos.write (len) ;
        }
        bis.close () ;
        bos.close () ;
    }
}

  文件7-15中,第5~6行代码分别创建了BufferedInputStream和BufferedOutputStream两个缓冲流对象,这两个流内部都定义了一个大小为8192的字节数组;第11~12行代码中调用read()或者write()方法读写数据时,首先将读写的数据存入定义好的字节数组;然后将字节数组的数据一次性读写到文件中,这种方式与7.2.4小节中讲解的字节流的缓冲区类似,都对数据进行了缓冲,从而有效地提高了数据的读写效率。

分享到:
在线咨询 我要报名
和我们在线交谈!