缓冲流-简析

缓冲流

1.1概述

缓冲流,也叫高效流,是对4个基本的FileXxx流的增强,所以也是4个流,按照数据类型分类:
字节缓冲流:BufferedInputStream,BufferedOutputStream
字符缓冲流:BufferedReader,BufferedWriter
缓冲流的基本原理,是在创建流对象时,先将数据缓冲起来,然后⼀起写⼊或者读取出来,减少系统IO次数,从⽽
提⾼读写的效率

1.2字节缓冲流

构造方法

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

构造举例,代码如下:

// 创建字节缓冲输⼊流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bis.txt"));
// 创建字节缓冲输出流
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("bos.txt"));

效率测试

1.基本流,代码如下:
public class BufferedClass {
    public static void main(String[] args) throws Exception {
        //记录开始时间
        long start = System.currentTimeMillis();

        FileInputStream ins = new FileInputStream("src\\file.txt");
        FileOutputStream ous = new FileOutputStream("src\\ax.txt");

//        byte[] buffer = new byte[1024];
        int len;
        while ((len = ins.read()) != -1) {
            ous.write(len);
        }
        //记录结束时间
        long end = System.currentTimeMillis()-start;
        System.out.println("普通流复制文件时间: "+end+" 秒");
        ins.close();
        ous.close();
    }
}

运行结果:

在这里插入图片描述

2.缓冲流,代码如下:
package com.xxx.bean;

import java.io.*;

/**
 * @author 想要的东西太贵
 * @version 喜欢的女人太美
 * @date 2021/7/28 11:12
 */
public class BufferedStream {
    public static void main(String[] args) throws IOException {
        //缓冲流
        //记录开始时间
        long start = System.currentTimeMillis();
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src\\file.txt"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src\\aa.txt"));
        //定义一个长度
        int len;
        while ((len = bis.read()) != -1) {
            bos.write(len);
        }
        //记录结束时间
        long end = System.currentTimeMillis() - start;
        System.out.println("缓冲流复制文件时间: "+end+" 秒");
        //关闭流
        bis.close();
        bos.close();
    }
}

运行结果:

在这里插入图片描述

3.缓冲流使用数组的方式,代码如下:
package com.xxx.bean;

import java.io.*;

/**
 * @author 想要的东西太贵
 * @version 喜欢的女人太美
 * @date 2021/7/28 11:12
 */
public class BufferedStream2 {
    public static void main(String[] args) throws Exception {
        //缓冲流
        //记录开始时间
        long start = System.currentTimeMillis();
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src\\file.txt"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src\\aa.txt"));
        //定义一个长度
        int len;
        //定义一个数组
        byte[] buffer = new byte[1024];
        while ((len = bis.read(buffer)) != -1) {
            bos.write(buffer,0,len);
        }
        //记录结束时间
        long end = System.currentTimeMillis() - start;
        System.out.println("缓冲流复制文件时间: "+end+" 秒");
        //关闭流
        bis.close();
        bos.close();
    }
}

运行结果:

在这里插入图片描述

1.3字符缓冲流

构造方法

public BufferedReader(Reader in) :创建⼀个 新的缓冲输⼊流。
public BufferedWriter(Writer out) : 创建⼀个新的缓冲输出流。

构造举例,代码如下:

// 创建字符缓冲输⼊流
BufferedReader br = new BufferedReader(new FileReader("br.txt"));
// 创建字符缓冲输出流
BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));

特有方法

字符缓冲流的基本⽅法与普通字节流调⽤⽅式⼀致,不再阐述,我们来看它们具备的特有⽅法。
BufferedReaderpublic String readLine() : 读⼀⾏⽂字。
BufferedWriterpublic void newLine() : 写⼀⾏⾏分隔符,由系统属性定义符号。

readLine方法演示,代码如下:

public class BufferedReaderDemo {
 public static void main(String[] args) throws IOException {
 // 创建流对象
 BufferedReader br = new BufferedReader(new FileReader("in.txt"));
 // 定义字符串,保存读取的⼀⾏⽂字
 String line = null;
 // 循环读取,读取到最后返回null
 while ((line = br.readLine())!=null) {
 System.out.print(line);
 System.out.println("------");
 }
 // 释放资源
 br.close();
 }
}

newLine方法演示,代码如下:

public class BufferedWriterDemo throws IOException {
 public static void main(String[] args) throws IOException {
 // 创建流对象
 BufferedWriter bw = new BufferedWriter(new FileWriter("out.txt"));
 // 写出数据
 bw.write("张家界");
 // 写出换⾏
 bw.newLine();
 bw.write("学院");
 bw.newLine();
 
 // 释放资源
 bw.close();
 }
}
输出效果:
张家界
学院
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值