当前位置: 首页 > news >正文

小白学习java第12天:IO流之缓冲流

1.IO缓冲流:

之前我们学习的都是原始流(FileInputStream字节输入流、FileOutputStream字节输出流、FIleReader字符输入流、FIleWriter字符输出流)其实我们可以知道对于这些其实性能都不是很好,要么太慢一个一个,要么就是创建buffer数组占内存,因此我们需要对其进行性能的提升!

1.1字节缓冲流

为什么缓冲就可以提高性能,下面我通过图进行详细的介绍!!!【这类学要注意就是缓冲输入输出流是没有能力进行输入输出的,就就好比是一个水龙头套子,他是依附于原始的字节输入输出流的!】

1.1.1字节缓冲输入流、字节缓冲输出流

package IoByteDemo;

import java.io.*;

public class Test06 {
    public static void main(String[] args) {
        try(
                //创建输入管道
                InputStream fileInputStream = new FileInputStream("src\\IoByteDemo\\img.png");
                //包装一个套子,缓冲输出流
                BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
                //创建输出管道
                OutputStream fileOutputStream = new FileOutputStream("src\\IoByteDemo\\img3.png");
                //包装一个套子,缓冲输出流
                BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
                ) {
            //首先我们创建一个1kb的字节数组
            byte[] buffer = new byte[4];
            //然后进行循环
            int len;
            while ((len = bufferedInputStream.read(buffer)) != -1){
                bufferedOutputStream.write(buffer,0,len);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

1.1.2字符缓冲输入流和字符缓冲输出流

package IoCharDemo;

import java.io.*;

public class Test04 {
    public static void main(String[] args) {
        try (
                //创建字符输入流
                FileReader fileReader = new FileReader("src\\IoCharDemo\\note03.txt");
                //再创建缓冲字符输入流
                BufferedReader bufferedReader = new BufferedReader(fileReader);

                //创建字符输出流
                FileWriter fileWriter = new FileWriter("src\\IoCharDemo\\note04.txt");
                BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
                ){
//            //对于缓冲输入流进行读行操作!
//            while (bufferedReader.readLine() != null){
//                System.out.println(bufferedReader.readLine());
//            }

            //开始进行复制
            //创建一个1024数组
            char[] buffer = new char[1024];
            //设置长度
            int len;
            while ((len = bufferedReader.read(buffer)) != -1){
                bufferedWriter.write(buffer,0,len);
            }
            System.out.println("赋值完成");
        }catch (Exception e){
            System.out.println("异常!");
        }
    }
}

总结:(如何提高字节读写数据的性能)

1.使用缓冲输入输出流,提高效率!

2.在内存进行容量更大的数据进行存储new byte[1024*n]适可而止

3.上述两者结合起来效果更好!

相关文章:

  • 数据库守护神-WAL机制
  • 业务幂等性技术架构体系-接口幂等
  • 时序数据异常检测-综述
  • 【蓝桥杯】赛前练习
  • STM32 模块化开发指南 · 第 3 篇 环形缓冲区 RingBuffer 模块设计与单元测试
  • WHAT - React 安全地订阅外部状态源 - useSyncExternalStore
  • 我的Hexo自动Webhook部署方案
  • tree-sitter 的 grammar.js 编写方法
  • 如何进行预算考核
  • Ubuntu22环境下,Docker部署阿里FunASR的gpu版本
  • 【力扣hot100题】(085)单词拆分
  • P8647 [蓝桥杯 2017 省 AB] 分巧克力
  • 智能配电保护:公共建筑安全的新 “防火墙”
  • 大模型评估框架-----OpenCompass模型评估简介
  • js触发隐式类型转换的场景
  • 5. 蓝桥公园
  • TCP/UDP的连接和数据发送过程详解
  • 【模拟电路】稳压二极管/齐纳二极管
  • SGLang实战:从KV缓存复用到底层优化,解锁大模型高效推理的全栈方案
  • vue实现在线进制转换
  • 免费制作模板网站/好的seo公司营销网
  • 网站建设哪些模板号/微信公众号推广网站
  • 怎样做网站呢 优帮云/网站seo最新优化方法
  • 怎么注册网络平台/成都seo网站qq
  • 企业网站设计网站/资源网
  • 北京比较好的网站公司/seo是干嘛的