Java - 缓冲输入输出流 (BufferedInputStream、BufferedOutputStream)

news2024/11/27 20:28:31

    缓冲 Buffer 它是内存空间的一部分,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分空间就叫做缓冲区,缓冲区是具有一定大小的。


    数据传输速度和数据处理的速度存在不平衡,例如每秒要写50次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两个事件,用buffer暂存起来,变成每5秒写一次硬盘,数据可以直接送往缓冲区,高速设备不用再等待低速设备,对系统的冲击就很小,写入效率高了。


    以下介绍 BufferedInputStream、BufferedOutputStream 这两个高级流在读取、写入的用法,以复制文件为例。



在这里插入图片描述



FileInputStream fis = new FileInputStream(file directory)


// 把 fis 封装到 BufferedInputStream 这个对象里
BufferedInputStream bis = new BufferedInputStream(fis);



FileOutputStream fos = new FileOutputStream(file directory);


// 把 fos 封装到 BufferedOutputStream 这个对象里
BufferedOutputStream bos = new BufferedOutputStream(fos);


    其中 bos.flush() 其实可以忽略这个刷新缓冲流。只调用 bis.close() 和 bos.close() 就可以。



    通过 BufferedInputStream 的底层代码可见,Inputstream 已经关闭



在这里插入图片描述



    再通过 BufferedOutputStream 的底层代码,虽然没有close() 的 方法,但根据 JDK7新特性try(在这里声明的会自动关闭),所以 OutputStream 也是被自动关闭,然后调用 flush()方法去执行。



在这里插入图片描述



    核心代码如下:



public class Buffer_IO_Stream {

    public static void main(String[] args){
        try {
            FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test\\1230.txt");
            BufferedInputStream bis  = new BufferedInputStream(fis);

            FileOutputStream fos  = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\test\\copy.txt");
            BufferedOutputStream bos = new BufferedOutputStream(fos);

            int size;
            byte[] buf  = new byte[1024];
            while ((size=bis.read(buf))!=-1){
                bos.write(buf,0,size);
            }

            // bos.flush();
            bis.close();
            bos.close();
        }
        catch(Exception e){
        }
    }
}


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

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

相关文章

SwiftUI教程之如何在 Xcode 14 中创建曲线导航栏动画

让我们开始打开 ​​Xcode 14。我们将在 ContentView 中执行所有代码。首先,我要添加一些资产。 现在我们可以转到 ContentView 并开始编码了!💯 我们将要实现@Environment 协议、GeometryReader 和路径。 SwiftUI 中的@Environment 协议是什么? 使用Environment属性包…

用Python制造雪景图,体验 “ 人工下雪 ” 得快乐~

前言 大家早好、午好、晚好吖 ❤ ~ 今天起床,一看温度,赶忙穿上我的秋裤 一到外面,那风呼啦呼拉拉得吹,感觉我魂都跑了 别的地方已经下雪,而我才刚降温,而且还是骤降 都开始学习Python了,是时候…

计算机组成原理习题课第四章-2(唐朔飞)

计算机组成原理习题课第四章-2(唐朔飞) ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:&…

WRKY转录因子通过促进GhMKK2介导的类黄酮生物合成调节棉花对尖孢镰刀菌的抗性

文章信息 题目:Group IIc WRKY transcription factors regulate cotton resistance to Fusarium oxysporum by promoting GhMKK2-mediated flavonoid biosynthesis 刊名:New Phytologist 作者:Lijun Wang,Chen Wang,Xingqi Guo…

利用FinalShell访问虚拟机

一、安装FinalShell 下载路径:https://pan.baidu.com/s/1uDIxLBnhrAQl_UqSHtD2Vw 提取码:fiaa 二、启动FinalShell 三、创建SSH连接 三、设置虚拟机主机名 1、查看虚拟机的主机名 命令:hostname 命令:cat /etc/hostname …

「Redis」01 NoSQL及Redis概述

笔记整理自【尚硅谷】Redis 6 入门到精通 超详细 教程 Redis——NoSQL及Redis概述 技术的分类 解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis解决性能的问题&am…

大客车玻璃擦净器设计

目 录 摘 要 I ABSTRACT II 1 绪论 1 1.1选题背景及意义 1 1.2发展现状 2 1.3发展趋势 3 1.4研究主要内容 4 2 大客车玻璃擦净器总体方案设计 5 2.1 大客车玻璃擦净器设计思想 5 2.2功能分析 5 2.3工作原理分析 6 2.4功能分解 6 2.4.2传动系统 6 2.4.3真空吸盘 7 2.4.4 清洁刷 …

devtools安装

文章目录一、devtools安装二、参考、推荐、补充一、devtools安装 vue官网上找到vue-devtools的GitHub项目 https://github.com/vuejs/devtools 我选择放在E盘中新建的devtools文件中,解压 进入解压好的devtools-main文件夹中 这里默认已经下载了node 然后在命…

CML、LVPECL和LVDS

1、Current-mode drivers VS Voltage-mode drivers 2、CML(Current Mode Logic) CML drivers that are built from an open-drain differential pair and a voltage-controlled current source using NMOS transistors. The outputs (Output and Outp…

02_openstack私有云部署

目录 一、环境准备 1、准备服务器 2、主机名与域名配置 3、yum仓库配置 4、配置时间同步 二、安装Openstack与Nova依赖环境 1、Nova依赖软件包安装 2、Openstack依赖软件包安装 三、搭建私有云 1、环境检查 2、配置应答文件answer.ini 一、环境准备 1、准备服务器 …

NHS-PEG-Biotin,Biotin-PEG-NHS,活性酯peg生物素生物素PEG衍生物

Biotin-PEG-NHS(NHS-PEG-Biotin)是生物素PEG衍生物的一种,该化学试剂其中文名为活性酯-聚乙二醇-生物素,它所属分类为Biotin PEG NHS ester PEG。 peg试剂的分子量均可定制,有:活性酯-聚乙二醇2-生物素&am…

[附源码]计算机毕业设计springboot基于VUE的网上订餐系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

RabbitMQ交换机

假设工作队列背后,每个任务都恰好交付给一个消费者(工作进程)。而将消息传达给多个消费者,这种模式称为“发布/订阅”。 例:构建一个简单的日志系统。它将由两个程序组成:第一个程序将发出日志消息,第二个程序是消费者…

Educational Codeforces Round 108 (Rated for Div. 2) C. Berland Regional

翻译: Polycarp是伯兰ICPC区域活动的组织者。伯兰有𝑛所大学,编号从1到𝑛。波利卡普认识这个地区所有有竞争力的程序员。有𝑛学生:𝑖-th学生在大学注册𝑢𝑖,有编程技能&…

PW2330原厂规格书12V转5V,3.3V稳压电源芯片,1A-3安

一般说明 PW2330 开发了一种高效率的同步降压 DC-DC 变换器 3A 输出电流。 PW2330 在 4.5V 到 30V 的宽输入电压范围内工作集成主开关和同步开关,具有非常低的 RDS( ON)以最小化传导 损失。 PW2330 采用专有的瞬时 PWM 结构,实现快…

jsp195ssm饭店餐饮管理系统hsg6034AHA5

目 录 第一章 绪论 1 1.1 研究的背景和意义 1 1.1.1网站的研究背景 1 1.1.2 网站研究的意义 1 1.2 研究现状 2 1.3 论文的主要内容 2 1.4 论文主体结构 3 第二章 开发工具和相关技术介绍 4 2.1 平台开发工具 4 2.2 平台开发相关技术 4 2.2.1…

VMware安装虚拟机(CentOS6)分配ip,并通过Xshell连接

VMware安装虚拟机(CentOS6)分配ip,并通过Xshell连接DHCP动态分配ip配置虚拟机网络设置虚拟机网卡并重启虚拟机网络重启虚拟机网卡手动写死固定ip通过vmware安装centos6虚拟机后,ifconfig命令查看虚拟机没有ip,因此无法…

pytest文档81 - 如何管理Captured logging日志

前言 pytest 自动捕获级别为 WARNING 或以上的日志消息,并以与捕获的 stdout 和 stderr 相同的方式在每个失败测试的各自部分中显示它们。 日志显示 当输入pytest命令,不带任何参数时 pytest如果运行的用例没有报错,那么打印的内容很简洁…

导出pdf高清

导出pdf高清 # 1.qq截图或者snipast截图 你可以qq 或者snipast软件截图。这两个软件截图都差不多。截图的时候你可以把pdf的图放到最大之后截图。到word里边调整尺寸。这样会清晰一些。 # 2.pdf编辑软件裁剪导出 这种方式最清晰 但是复杂点。 1.选择你要用的那个pdf 之后右键…

CIGS太阳能电池中的吸收

摘要 太阳能电池是可再生能源领域的一种基础技术。为了优化效率,大多数常见的设计使用薄膜结构和具有高吸收系数的介质——因为正是这种吸收的光能最终会转化为电流。基于铜铟硒化镓(CIGS)的太阳能电池,与基于其他材料的电池相比,它们可以变…