缓冲流
高速读写的缓冲流
1. 概述
缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:
- 字节缓冲流:
BufferedInputStream,BufferedOutputStream - 字符缓冲流:
BufferedReader,BufferedWriter
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
2. 字节缓冲流
2.1构造方法
public BufferedInputStream(InputStream in):创建一个 新的缓冲输入流。public BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流。
2.2 字节缓冲输出流——BufferedOutputStream的简单使用
- 创建
FileOutputStream对象 - 创建
BufferedOutputStream对象 - 使用
BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中 - 使用
BufferedOutputStream对象中的方法flush,把内部缓冲区中的数据,刷新到文件中 - 使用
BufferedOutputStream对象中的方法close,释放资源

package com.itheima.demo01.BufferedStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo01BufferedOutputStream {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("a.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write("数据资料".getBytes());
bos.flush();
bos.close();
}
}
=
运行结果

2.3 字节缓冲输入流——BufferedInputStream的简单使用
- 创建
FileInputStream对象 - 创建
BufferedInputStream对象 - 使用
BufferedIntputStream对象中的方法read,把数据从文件中读出 - 创建一个byte[]数组,将读取到的字节数暂时存入
- 读取数组中的元素,将byte转换为String输出
- 使用
BufferedInputStream对象中的方法close,释放资源
4,5可以省略
package com.itheima.demo01.BufferedStream;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class Demo02BufferedInputStream {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("a.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] bytes = new byte[1024];
int len = 0;
while ((len = bis.read(bytes)) != -1) {
System.out.println(new String(bytes, 0, len));
}
fis.close();
bis.close();
}
}
运行结果
数据资料
3. 字节缓冲流测试
使用普通的字节输入输出流结果(未添加数组)

使用普通的字节输入输出流结果(已添加数组)

使用字节缓冲流的结果(未添加数组)

使用字节缓冲流的结果(已添加数组)

综合上面的测试:
缓冲流速度大于普通流 添加了数组的大于未添加数组的
3. 字符缓冲流
3.1 构造方法
public BufferedReader(Reader in):创建一个新的缓冲输入流。public BufferedWriter(Writer out): 创建一个新的缓冲输出流。
3.2特有方法
字符缓冲流的基本方法与普通字符流调用方式一致,不再阐述,我们来看它们具备的特有方法。
- BufferedReader:
public String readLine(): 读一行文字。 - BufferedWriter:
public void newLine(): 写一行行分隔符,由系统属性定义符号。
3.3 字符缓冲输出流——BufferedWriter的简单使用

package com.itheima.demo01.BufferedStream;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Demo03BufferedWriter {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("b.txt");
BufferedWriter bw = new BufferedWriter(fw);
for (int i = 0; i < 10; i++) {
bw.write("数据资源");
bw.newLine();
}
bw.flush();
bw.close();
}
}
运行结果

3.4 字符缓冲输入流——BufferedReader的简单使用
package com.itheima.demo01.BufferedStream;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Demo04BufferedReader {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("b.txt"));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
运行结果
数据资源
数据资源
数据资源
数据资源
数据资源
数据资源
数据资源
数据资源
数据资源
数据资源
16万+

被折叠的 条评论
为什么被折叠?



