更新时间: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小节中讲解的字节流的缓冲区类似,都对数据进行了缓冲,从而有效地提高了数据的读写效率。
毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03AI智能应用开发课程紧贴企业刚需,全程高效学习,直达中高级软件开发水平
2026-02-28风口正劲!黑马程序员又一AI智能应用开发班毕业当天100%就业!
2026-02-27