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

图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小节中讲解的字节流的缓冲区类似,都对数据进行了缓冲,从而有效地提高了数据的读写效率。
1024首播|39岁程序员逆袭记:不被年龄定义,AI浪潮里再迎春天
2025-10-241024程序员节丨10年同行,致敬用代码改变世界的你
2025-10-24【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19