**缓冲流的作用**:可以对原始流进行包装,提高原始流读写数据的性能。
1.1 字节缓冲流
是因为在缓冲流的底层自己封装了一个长度为8KB(8192byte)的字节数组,但是缓冲流不能单独使用,它需要依赖于原始流。
读数据时:它先用原始字节输入流一次性读取8KB的数据存入缓冲流内部的数组中(ps: 先一次多囤点货),再从8KB的字节数组中读取一个字节或者多个字节(再消耗屯的货)。
写数据时:它是先把数据写到缓冲流内部的8BK的数组中(ps: 先攒一车货),等数组存满了,再通过原始的字节输出流,一次性写到目标文件中去(把囤好的货,一次性运走)。
在创建缓冲字节流对象时,需要封装一个原始流对象进来。构造方法如下
1.2 字符缓冲流
BufferedReader读数据时:先原始字符输入流一次性读取8KB的数据存入缓冲流内部的数组中(ps: 先一次多囤点货),再从8KB的字符数组中读取一个字符或者多个字符(再消耗屯的货)
创建BufferedReader对象需要用到BufferedReader的构造方法,内部需要封装一个原始的字符输入流,我们可以传入FileReader
BufferedWriter写数据时:它是先把数据写到字符缓冲流内部的8BK的数组中(ps: 先攒一车货),等数组存满了,再通过原始的字符输出流,一次性写到目标文件中去(把囤好的货,一次性运走)。如下图所示