Java IO 4个Buffed的缓冲顶级类(比如bufferedInputStream)的 总结教程

原理:Buffered的原理和之前数组增加复制图片速度的原理一致点击查看

在这里插入图片描述

一、bufferedInputStream,bufferedOutputStream,

1.总结
  • 一、原理,读取单个字节太慢,5000毫秒
  • 我们用一个数组来代替很快 0毫秒就可以,Buffer就是一个默认长度的数组.
  • 二、BufferInputStream extends InputStream.继承所有方法使用方法一致
  • 三、构造
  • new BufferInputStream(InputStream inputStream,int size)
  • size 不写就是默认
  • 四、步骤
  • 1.new 读in和写Out的流
  • 2.new 读写的缓冲流
  • 3.再加字节数组双倍快乐
  • 4.如果不是-1读in出来,复制out出来.
2.code
package Java学习.Java高级.IO.Buffer4大顶级IO类的缓冲类.BufferInputStream和BufferOutputStream;

import java.io.*;

/**
 * 一、原理,读取单个字节太慢,5000毫秒
 * 我们用一个数组来代替很快 0毫秒就可以,Buffer就是一个默认长度的数组.
 * 二、BufferInputStream extends InputStream.继承所有方法使用方法一致
 * 三、构造
 * new BufferInputStream(InputStream inputStream,int size)
 * size 不写就是默认
 * 四、步骤
 * 1.new 读in和写Out的流
 * 2.new 读写的缓冲流
 * 3.再加字节数组双倍快乐
 * 4.如果不是-1读in出来,复制out出来.
 */
public class Main {
    public static void main(String[] args) throws IOException {
        String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习\\Java高级\\IO\\Buffer" +
                "4大顶级IO类的缓冲类\\BufferInputStream和BufferOutputStream\\";
        //1,
        FileInputStream fileInputStream = new FileInputStream(url + "img.png");
        FileOutputStream fileOutputStream = new FileOutputStream(url + "使用Buffer缓冲复制很快.png");
        //2.
        BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
        //3.
        byte[] bytes = new byte[1024*100];
        //4.
        long startTime = System.currentTimeMillis();
        while (bufferedInputStream.read(bytes,0,bytes.length)!= -1){//如果还有数据
            bufferedOutputStream.write(bytes,0,bytes.length);
        }
        bufferedOutputStream.flush();//刷新
        bufferedOutputStream.close();//关闭写,其实Buffer可以在关闭时候自动刷新了。
        bufferedInputStream.close();//关闭读
        System.out.println("复制800KB用时:"+(System.currentTimeMillis()-startTime)+" 毫秒");
        System.out.println("多次测试得知缓冲默认size或者数组[1024]越大,复制越快");
    }
}

Run:
复制800KB用时:1 毫秒
多次测试得知缓冲默认size或者数组[1024]越大,复制越快

Process finished with exit code 0

二、,BufferedReader,BufferWriter字符

package Java学习.Java高级.IO.Buffer4大顶级IO类的缓冲类.BufferReader和BufferWriter;

import java.io.*;

/**
 * @BufferWriter有一个新的方法newLine换行
 * 类似BufferInputStream 详情看之前BufferInputStream的代码
 *  * 一、步骤
 *  1.new FileWriter 写
 *  2.new Buffer 写
 *  3.用 buffer的write("faff")写入文件
 *  4.刷新
 *  5.关闭
 *  二、读取
 *  1.new Reader
 *  2.new Buffer读取
 *  3.如果读取不为空,循环连续读取
 *  4.关闭
 */
public class Main {
    public static void main(String[] args) throws IOException {
        String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习\\Java高级\\IO\\Buffer4大顶" +
                "级IO类的缓冲类\\BufferReader和BufferWriter\\";
        System.out.println("--------1.buffer写-----------------");
        //1.
        FileWriter fileWriter = new FileWriter(url + "嫌疑人.txt");
        //2.
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        //3.
        for (int i = 0; i < 10; i++) {
            bufferedWriter.write("第"+i+"个字符串");
            bufferedWriter.newLine();//新的newLine()方法换行
        }
        //4.刷新
        bufferedWriter.flush();
        //5.close()
        bufferedWriter.close();
        System.out.println("----------------2.Buffer读取---------");
        //1
        FileReader fileReader = new FileReader(url + "嫌疑人.txt");
        //2.
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        //3,输出
        char[] chars = new char[1024];
        while (bufferedReader.read(chars,0,chars.length)!=- 1){
            System.out.println(chars);
        }
        //close
        bufferedReader.close();
        System.out.println("----------readLine()方法读一行-----------.");
        fileReader = new FileReader(url + "嫌疑人.txt");//Buffer
        BufferedReader bufferedReader1 = new BufferedReader(fileReader);
        String line;
        while ((line = bufferedReader1.readLine()) != null){
            System.out.println(line);
        }

    }
}

Run:
--------1.buffer写-----------------
----------------2.Buffer读取---------
第0个字符串
第1个字符串
第2个字符串
第3个字符串
第4个字符串
第5个字符串
第6个字符串
第7个字符串
第8个字符串
第9个字符串

----------readLine()方法读一行-----------.
第0个字符串
第1个字符串
第2个字符串
第3个字符串
第4个字符串
第5个字符串
第6个字符串
第7个字符串
第8个字符串
第9个字符串

Process finished with exit code 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JarvanStack

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

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

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

打赏作者

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

抵扣说明:

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

余额充值