缓冲流

缓冲流

高速读写的缓冲流

1. 概述

缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:

  • 字节缓冲流BufferedInputStreamBufferedOutputStream
  • 字符缓冲流BufferedReaderBufferedWriter

缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。

2. 字节缓冲流

2.1构造方法

  • public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流。
  • public BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流。

2.2 字节缓冲输出流——BufferedOutputStream的简单使用

  1. 创建FileOutputStream对象
  2. 创建BufferedOutputStream对象
  3. 使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中
  4. 使用BufferedOutputStream对象中的方法flush,把内部缓冲区中的数据,刷新到文件中
  5. 使用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的简单使用

  1. 创建FileInputStream对象
  2. 创建BufferedInputStream对象
  3. 使用BufferedIntputStream对象中的方法read,把数据从文件中读出
  4. 创建一个byte[]数组,将读取到的字节数暂时存入
  5. 读取数组中的元素,将byte转换为String输出
  6. 使用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();
    }
}

运行结果

数据资源
数据资源
数据资源
数据资源
数据资源
数据资源
数据资源
数据资源
数据资源
数据资源

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绕球飞行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值