本文已参与「新人创作礼」活动,一起开启掘金创作之路。
第三章:缓冲流
简述: 功能更强大的流,能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些都是在基本的流对象基础之上创建而来的,是对基本流对象的一种增强
1.1 字节缓冲流
继承自父类的共性成员方法:
public void close()
public void flush()
public void write(byte[] b)
public void write(byte[] b, int off, int len)
public abstract void write(int b)
1.11 BufferedOutputStream
构造方法:
- BufferedOutputStream(OutputStream out)
- BufferedOutputStream(OutputStream out, int size)
使用步骤:
- 创建FileOutputStream对象,构造方法中绑定要输出的目的地
- 创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率
- 使用BufferedOutputStream对象中的write方法,把数据写入到内部缓冲区中
- 使用BufferedOutputStream对象中的flush方法,把内部缓冲区中的数据刷新到文件中
- 释放资源(会先调用flush方法刷新数据)
练习
FileOutputStream fos = new FileOutputStream("E:\\test\\c.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write("把数据写到缓冲区中".getBytes());
bos.flush();
bos.close();
1.12 BufferedIntputStream
构造方法:
- BufferedIntputStream(OutputStream out)
- BufferedIntputStream(OutputStream out, int size)
使用步骤:
- 创建FIleInputStream对象,构造方法中传入读取的数据源
- 创建BufferedInputStream对象,构造方法中传入FIleInputStream
- 使用BufferedInputStream中的read方法,读取文件
- 释放资源
练习
FileInputStream fis = new FileInputStream("E:\\test\\c.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] cs = new byte[1024];
int len = 0;
while ((len = bis.read(cs)) != -1) {
System.out.println(new String(cs, 0, len));
}
bis.close();
1.2 字符缓冲流
1.21 BufferedWriter
构造方法:
- BufferedWriter(Writer out)
- BufferedWriter(Writer out, int sz)
特有的成员方法:
void newLine() 写入一个行分隔符。会根据不同的操作系统,获取不同的行分隔符
使用步骤:
- 创建BufferedWriter对象,构造方法中传入写入的数据源