缓冲流(高效流)
1.概念
缓冲流:也叫高效流,对基本的流的一种增强
2.分类(数据类型)
字节缓冲流:BufferedInputStream & BufferedOutputStream
字符缓冲流:BufferedReader & BufferedWriter
3.缓冲流原理
在创建流对象时,会创建一个内置的默认大小的缓冲数组,通过缓冲区读写,减少系统IO次数,从而提高效率
一.字节缓冲流
1.BufferedOutputStream
1)概念
java.io.BufferedOutputStream extends OutputStream
java.io.BufferedOutputStream:字节缓冲输出流
2)构造方法
BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以便以指定的缓冲区大小将数据写入指定的底层输出流。
参数:
OutputStream out:字节输出流,可以传递FileOutputStream缓冲流会增加一个缓冲区,提高效率
int size:指定缓冲流内部缓冲区大小,不指定默认大小
3)使用步骤:
//1.创建FileOutputStream对象,构造方法中绑定输出目的地
FileOutputStream fos = new FileOutputStream("G:\\a.txt");
//2.创建BufferedOutputStream对象,构造方法传递FileOutputStream对象
BufferedOutputStream bos = new BufferedOutputStream(fos);
//3.使用BufferedOutputStream对象中的方法writer,把数据写入到内部缓冲区
bos.write("写入数据到内部缓冲区".getBytes());
//4.使用BufferedOutputStream对象中的方法flush,把内部缓冲区中的数据,刷新到文件中
bos.flush();
//5.释放资源(会调用flush方法)
bos.close();
2.BufferedInputStream
1)概念
ava.io.BufferedInputStream extends InputSrtream
BufferedInputStream:高效字节输入流
2)构造方法
BufferedInputStream(InputStream in) 创建一个 BufferedInputStream并保存其参数,输入流 in ,供以后使用。
BufferedInputStream(InputStream in, int size) 创建 BufferedInputStream具有指定缓冲区大小,并保存其参数,输入流 in ,供以后使用
3)使用步骤:类似
二.字符缓冲流
1.BufferedWriter
1)概念
java.io.BufferedWriter extends Writer
BufferedWriter:字符缓冲输入流
2)构造方法
BufferedWriter(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz) 创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。
3)特有的成员方法
void newLine() 写一个行分隔符。(换行)
4)使用步骤:
//1.创建字符缓冲输出流对象,构造方法中传递字符输出流
BufferedWriter bw = new BufferedWriter(new FileWriter("G:\\a.txt"));
//2.调用字符缓冲输出流对象中writer方法,把数据写入到内存缓冲区中
bw.newLine();//换行
bw.write("高效字符输出流");
//3.调用对象中flush方法,把内存缓冲区中的数据,刷新到文件中
bw.flush();
//4.释放资源
bw.close();
2.BufferedReader
1)概念
java.io.BufferedReader extends Reader
BufferedReader:高效字符输入流
2)构造方法
BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz) 创建使用指定大小的输入缓冲区的缓冲字符输入流。
3)特有成员方法
String readLine() 读一行文字。
读一行文字:
一行被视为由换行符('\ n'),回车符('\ r')中的任何一个或随后的换行符终止。
结果:
包含行的内容的字符串,不包括任何行终止字符,如果已达到流的末尾,则为null
4)使用步骤:类似