13_4、Java的IO流之缓冲流的使用

news2024/9/28 3:25:58

一、引入

为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类 时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。

二、缓冲流涉及到的类

字节输入流:BufferedInputStream

字节输出流BufferedOutputStream

字符输入流:BufferedReader

字符输出流:BufferedWrite

三、缓冲流的作用

1、提高节点流处理文件的效率。

2、提高读写效率的原因:内部提供了缓冲区。

四、缓冲流与节点流处理数据的效率对比

//封装一个缓冲流复制文件的方法
    public void copyWithBuffered(String srcPath,String destPath){
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            //1.造文件
            File srcFile = new File(srcPath);
            File destFile = new File(destPath);

            //2.造流
            //2.1造节点流
            FileInputStream fis = new FileInputStream(srcFile);
            FileOutputStream fos = new FileOutputStream(destFile);

            //2.2造缓冲流
            bis = new BufferedInputStream(fis);
            bos = new BufferedOutputStream(fos);

            //3.数据操作
            byte[] cbuf = new byte[1024];
            int len;
            while((len = bis.read(cbuf)) != -1){
                bos.write(cbuf,0,len);

//                bos.flush();//刷新缓冲区
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {

            //关闭流资源
            //要求:先关闭外层的流,在关闭内层的流
            if(bos != null){
                try {
                    bos.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }

            }
            if(bis != null){
                try {
                    bis.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }

            }
        }
        //说明:在关闭外层的流后,会自动关闭内层的流。
//        fos.close();
//        fis.close();
    }


    @Test
    public void testCopyWithBuffered(){
        long start = System.currentTimeMillis();

        String srcPath = "C:\\Users\\suxintai\\Desktop\\01-视频.mp4";
        String destPath = "C:\\Users\\suxintai\\Desktop\\03-视频.mp4";

        copyWithBuffered(srcPath,destPath);

        long end = System.currentTimeMillis();

        System.out.println("复制视频花费的时间为" + (end-start));//605---156
    }

测试结果:复制相同视频缓冲流使用999毫秒,而根据上一章13_3、Java的IO流之节点流的使用 中字节流使用了4346毫秒。可见缓冲流在处理数据的效率要高于字节流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch入门理解

一、入门操作 1、创一个tensor矩阵 x torch.rand(5, 3) x out: tensor([[0.5051, 0.7017, 0.0170],[0.1441, 0.2476, 0.5710],[0.0452, 0.8690, 0.2387],[0.5709, 0.0098, 0.6993],[0.3203, 0.5124, 0.1010]])创建好后可以直接打印,要比tensorflow好用…

【SQL时间截取】数据库Sql实现截取时间段和日期

【写在前面】前些日子接到这样的需求,我们要对用户访问网站的时间做个统计,但是我想统计到具体的时间点,便于统计不同时间段(上午、下午、傍晚、凌晨)访问的人数占比。 数据库Sql实现截取时间段和日期1、原始数据查看2…

【云原生】k8s之Ingress

内容预知 1.Ingress的相关知识 1.1 Ingress的简介 1.2 Ingress 的组成 1.3 Ingress-Nginx的工作原理 1.4 新生代Ingress-controller (Traefik) Ingress-nginx和Ingress-Traefik的简单对比 1.5 Ingress的暴露方式 方式一:DeploymentLoad…

ocr票据证件信息抽取正则化

Python 正则表达式 | 菜鸟教程Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式…

华为数字化转型之道 实践篇 第九章 数字化运营:实现业务运营模式升级

第九章 数字化运营:实现业务运营模式升级 业务运营是为了帮助企业基于自身业务战略,更好地达成企业经营与运营目标,这中间包含业务沿着流程周而复始地运转,以及在作业过程中识别并推动问题解决等过程。 而数字化运营旨在利用数字技术获取、管理和分析数据,为企业的战略决…

[ 常用工具篇 ] burpsuite_pro 安装配置详解(附安装包)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

【矩阵论】5. 线性空间与线性变换——线性空间

矩阵论 1. 准备知识——复数域上矩阵,Hermite变换) 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵,二次型,矩阵合同,正定阵,幂0阵,幂等阵,矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值…

JVM调优学习

JVM 介绍 1 什么是 JVM JVM 是 Java Virtual Machine(Java 虚拟机)的缩写。一台执行 Java 程序的机器。 2 JAVA 语言的执行原理 计算机语言: 计算机能够直接执行的指令。这种指令和系统及硬件有关。 计算机高级语言: 在遵循语…

主机加固对服务器防勒索病毒有哪些好处

​ 近年来,计算机以及互联网应用在中国得到普及和发展,已经深入到社会每个角落,政府,经济,军事,社会,文化和人们生活等各方面都越来越依赖于计算机和网络,电子政务,无纸办…

排列树和子集树

排列树 输出数组的全排列 排列问题: 设R {r1,r2,r3,…,rn}是要排列的n个元素,Ri R - {r1} 集合X中元素的全排列记为perm(X)。(ri)perm(x)便是在全排列perm(X)的每一个排列前加上前缀ri得到的排列。 R的全排列: n1时&…

通信电子、嵌入式类面试题刷题计划02

文章目录011——单片机上电后没有运转,首先要检查什么?【校招】012——请描述你对数字IC的认识【实习】013——电脑的组成,细化到显卡之类的【软件/硬件测试】014——黑盒测试和白盒测试的区别? 【软件/硬件测试】015——名词扩写&#xff1…

【C语言开源项目】tinyhttpd ——下载、安装、使用

前言 本系列将带领大家看一些C语言的优秀的开源项目,并逐步深入讲解源码,感兴趣的可以点击关注、收藏,有问题及时在评论区评论~ Tinyhttpd 介绍 Tinyhttpd 是一个非常轻量级的 web server,总共只有500多行代码,非常…

Studio One2023中文版支持视频配乐加歌词音轨功能

Studio One 6中文特别版,现在Studio One 6终于有了视频支持,可以方便做视频配乐了。视频可以作为一个独立的音轨使用,跟乐器和音频音轨一样。你可以像音频素材一样在时间条来回拖拽视频来进行音画同步对齐。如果视频也包括了音频,…

第十章 鲁棒性检查(下)

文章目录10.9 统计静态时序分析(Statistical Static Timing Analysis)10.9.1 工艺和互连走线变化(Process and Interconnect Variations)10.9.2 统计分析(Statistics Analysis)10.10 时序违例路径(Paths Failing Timing)路径找不到(No Path Found)跨时钟域(Clock Crossing Doma…

PMP证书的含金量怎么样?

是高的,在项目管理或者管理领域中,知名度和含金量都是在前列的。PMP证书是由美国PMI项目管理协会发起的,享誉国内外,含金量不高点都不会有超过百万的人获得这个证书了,而不管是对个人、组织甚至是整个项目管理行业&…

python采集往期股票数据进行分析预测

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 准备工作 既然要去赚马内,咱们首先要获取往期的数据来进行分析, 通过往期的规律来对当前进行预测,准不准我不知道,反正比人预测的准, 不准也不要喷我&#xff0…

使用markdown语法+Typora+MPic+七牛云对象存储写作教程

使用markdown语法TyporaMPic七牛云对象存储写作教程 一. markdown语法 Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML、PDF 以及…

UCOS简单介绍

什么是UCOS? UCOSII 的前身是 UCOS,最早出自于 1992 年美国嵌入式系统专家 Jean J.Labrosse 在《嵌入式系统编程》杂志的 5 月和 6 月刊上刊登的文章连载,并把 UCOS 的源码发布在该杂志的BBS 上。 UCOSII 是一个可以基于 ROM 运行的、可裁减…

支付系统设计

支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是…

TCP/IP网络传输模型

先来个总结: TCP/IP的网络传输模型可以分为以下四层:应用层、传输层、IP网络层、网络接口层。 下面我们来简单介绍每一层的作用和工作原理 应用层(Application Layer) 从网络传输模型来说,应用层能说的东西不是太多&a…