目标:字节缓冲输入流的使用
结构:
字节流 | 字符流 | ||
字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
InputStream | OutputStream | Reader | Writer(抽象类) |
FileInputStream | FileOutputStream | FileReader | FileWriter(实现类,低级流,原始流) |
BufferedInputStream | BufferedOutStream | BufferedReader | BufferedWriter(实现类,缓冲流) |
字节缓冲输入流:BufferedInputStream
– 作用:可以把低级的字节输入流包装成一个高级的缓冲字节输入流管道,
从而提高字节输入流读数据的性能。
– 构造器: public BufferedInputStream(InputStream in)
– 原理:缓冲字节输入流管道包装了低级的字节输入流管道以后
就自带一个缓冲池,缓冲池是内存的一块区域,一次可以直接提取8KB数据到内存
以后程序直接在内存的缓冲池中读取数据,性能是很快的!
小结:
缓冲字节输入流提高了字节输入流读数据的性能,功能几乎一样
public class BufferedInputStreamDemo01 {
public static void main(String[] args) throws Exception {
// 1.定义一个低级的字节输入流管道与源文件接通
InputStream is = new FileInputStream("src/dlei01.txt");
// 3.把低级的字节输入流管道包装成一个高级的缓冲字节输入流管道。
BufferedInputStream bis = new BufferedInputStream(is);
// 2.定义一个字节数组读取数据输出
byte[] buffer = new byte[32];
int len = 0;
while((len = bis.read(buffer)) != -1){
System.out.print(new String(buffer,0,len));
}
}
}
字节缓冲输出流:BufferedOutputStream
– 作用:可以把低级的字节输出流包装成一个高级的缓冲字节输出流,从而提高写数据的性能。
– 构造器:public BufferedOutputStream(OutputStream os)
– 原理:缓冲字节输出流自带了8KB缓冲池,数据就直接写入到缓冲池中去,性能极高了!
小结:
缓冲字节输出流可以包装低级的字节输出流提高写数据的性能,功能几乎不变。
public class BufferedInputStreamDemo02 {
public static void main(String[] args) throws Exception {
// 1.定义一个低级的字节输出流管道与目标文件接通
OutputStream os = new FileOutputStream("src/dlei02.txt");
// 3.把低级的字节输出流管道包装成一个高级的缓冲字节输出流管道
BufferedOutputStream bos = new BufferedOutputStream(os);
// 2.写数据出去
bos.write(97);
bos.write('A');
bos.write("我爱你中国".getBytes());
bos.close();
}
}