Java 输入与输出(I\O)之字节缓冲流【BufferedInputStream】【BufferedOutputStream】详解

缓冲流是Java I/O中的一个重要概念,它可以提高文件读写的性能。

由于磁盘的IO处理速度远低于内存的读写速度。
为了提高文件读写性能,我们可以使用缓冲流。缓冲流使用内存缓冲区,可以一次性读取或写入大量数据,从而减少与磁盘的交互次数,提高整体性能。

缓冲流有两种类型:缓冲字节流和缓冲字符流。
缓冲字节流包括BufferedInputStream和BufferedOutputStream,而缓冲字符流包括BufferedReader和BufferedWriter。
在这里插入图片描述
缓冲流是装饰流(处理流),不能直接访问数据源,必须使用节点流作为参数,通过节点流的桥梁实现访问数据源的目的。

字节缓冲流
字节缓冲流包括BufferedInputStream和BufferedOutputStream,它们分别继承自InputStream和OutputStream。它们是装饰流,可以用来装饰节点流和处理流,以增加缓冲功能,提升处理效率。

字节缓冲流的常用方法:
在这里插入图片描述
在这里插入图片描述

下面是一个字节缓冲流的演示例程:

package IOStream;
import java.io.*;
public class BufferedStreamDemo {public static void copyFileWithBuffered(String srcPath,String destPath) {File src = new File(srcPath);File dest = new File(destPath);byte[] buffer = new byte[1024];int len;try(BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dest))){while((len = bis.read(buffer)) != -1){bos.write(buffer,0,len);}} catch (IOException e) {e.printStackTrace();}    }public static void main(String[] args) {String sPath = "D:/src/mp4/九寨沟风景.mp4";String dPath = "D:/src/mp4/九寨沟风景B.mp4";copyFileWithBuffered(sPath, dPath);System.out.println("文件复制成功!");}
}

测试结果:
在这里插入图片描述

参考文献与博客:
Java中的缓冲流详细解析
Java学习之缓冲流的原理详解
java 缓冲流的概念使用方法以及实例详解

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

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

相关文章

vscode中每个打开的文件都显示在一个单独的标签页中

版本:1.94 实现步骤: 1、打开设置 File-》Preferences-》Settings 2、具体设置 2.1、在配置中搜索 workbench.editor.showTabs 设置为multiple。 2.2、在配置中搜索 workbench.editor.enablePreview 取消勾选。 根据这个功能的说明,在…

24.10.20(换根哈希)

星期一: 阴间场 cf渡劫成功,拿下三题,终于上蓝🥳🥳🥳 贴 cf round978 div2 C cf传送门 答案取到n1但初始化没到n1,wa了一发,很烦😿…

100. UE5 GAS RPG 显示范围魔法的攻击范围

在这一篇里,我们将制作一个范围魔法,释放魔法时,我们将在鼠标拾取位置绘制一个魔法光圈,用于显示技能释放时攻击的范围,然后再次点击可以释放技能。 创建贴花类 魔法范围标识的光圈,我们采用贴花实现&…

利用飞腾派进行OpenCV开发

实验目标: 完成飞腾平台OpenCV开发。 实验大纲: Mat数据结构加载、显示、保存图像读写像素RGB图像分离彩色图转灰度图 Mat数据结构 Mat是一个类,由两个数据部分组成:矩阵头(大小,通道,数据类型等)和数据块(像素 值)。创建示例…

SQL Server-导入和导出excel数据-注意事项

环境: win10,SQL Server 2008 R2 之前写过的放在这里: SqlServer_陆沙的博客-CSDN博客 https://blog.csdn.net/pxy7896/category_12704205.html 最近重启ASP.NET项目,在使用sql server导出和导入数据时遇到一些问题,特…

SDRAM控制器的设计与验证(野火学习笔记)

SDRAM发展至今已历经五代,具有单位存储量大、高数据带宽、读写速度快、价格相对便宜等优点。同时,作为内存条中不可缺少的有一部分,SDRAM在计算机领域也占有一席之地。 (SDRAM的内容以及操作时序比较复杂,本文已经尽可…

计算机毕业设计Python+大模型知识图谱中华古诗词可视化 古诗词智能问答系统 古诗词数据分析 古诗词情感分析 PyTorch Tensorflow LSTM

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 开发技术: 前端…

Web前端-JavaScript书写位置

一、JavaScript介绍 1.JavaScript 是什么? 是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。 2.作用 (1)网页特效(监听用户的一些行为让网页作出对应的反馈) (2)表单验证(针对表单数据的合法性进行判断…

大语言模型训练

大语言模型训练 1.两大问题2.并行训练2.1数据并行2.2模型并行2.3张量并行2.4混合并行 3.权重计算3.1浮点数3.2混合精度训练3.3deepspeed(微软)3.3.1 ZeRO3.3.2ZeRO-offload 3.3总结 4.PEFT4.1Prompt TuningPrefix-tuning4.2P-tuning & P-tuning v2 5…

sentinel dashboard分布式改造落地设计实现解释(二)-分布式discovery组件

discovery discovery负责维护app/机器资料库,transport健康检测, transport上下线处理。discovery关键是分布式存储,后续研究一下raft,其复制,状态机,快照技术,但个人觉得,discover…

DBeaver连接Hive教程

hive shell:通过hive shell来操作hive,但是至多只能存在一个hive shell,启动第二个会被阻塞,也就是说hive shell不支持并发操作。 基于JDBC等协议:启动hiveserver2,通过jdbc协议可以访问hive,hi…

基于SSM服装定制系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,服装类型管理,服装信息管理,服装定制管理,留言反馈,系统管理 前台账号功能包括:系统首页,个人中心&#xf…

git commit / push 报错 文件不存在

1. 错误信息 尝试使用 git restore --staged filename 取消暂存,但是报错 2. 解决方法 进入 当前仓库/.git文件夹内,删除 index.lock 文件 再执行 git restore --staged filename 等操作。

通过无线路由器连接三菱PLC的设置方法

1.首先设置无线路由器上网方式为DHCP(自动获取IP地址)。点击保存,然后点击更多功能 2.再点击网络设置-局域网,勾选DHCP服务器,此功能的作用是对局域网内所有设备分配IP地址。 然后保存; 3.再点击系统设置…

Git极速入门

git初始化 git -v git config --global user.name "" git config --global user.email "" git config --global credential.helper store git config --global --list省略(Local) 本地配置,只对本地仓库有效–global 全局配置,所有…

云计算实验1——基于VirtualBox的Ubuntu安装和配置

实验步骤 1、VirtualBox的安装 本实验使用VirtualBox-7.0.10 进行演示。对于安装包,大家可以前往 VirtualBox官网下载页面(https :/ / www. virtualbox.org/wiki/Downloads)下载其7.0版本安装包进行安装,或者直接使用QQ群的安装包VirtualBox-7.0.10-15…

给定一个正整数n随机生成n个字节即生成2n个十六进制数将其组成字符串返回secrets.token_hex(n)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 给定一个正整数n 随机生成n个字节 即生成2n个十六进制数 将其组成字符串返回 secrets.token_hex(n) [太阳]选择题 根据题目代码,执行的结果错误的是? import secrets …

对vue响应式数据的理解(vue基础,面试,源码级讲解)

首先我们要知道哪些数据可以劫持。 是否可以劫持: 在JavaScript等动态语言中,字符串和数字虽然是基本数据类型(也称为原始数据类型),但它们可以包装成对象(如String对象和Number对象)进行处理。…

软件测试笔记——接口测试

文章目录 一、概念1.接口测试流程2.URL3.HTTP协议4.RESTful5.案例介绍 二、Postman1.Postman软件2.登录接口调试-获取验证码3.登录接口调试-自动关联数据4.合同上传接口-提交请求数据5.提交参数查询6.批量执行7.接口用例设计8.断言8.参数化三、案例1.项目2.课程添加3.课程列表查…

萤石云服务支持云端视频AI自动剪辑生成

萤石视频云存储及媒体处理服务是围绕IoT设备云端存储场景下的音视频采集、媒体管理、视频剪辑和分发能力的一站式、专业云服务,并可面向广大开发者提供复杂设备存储场景下的完整技术方案。目前该服务新增了视频剪辑功能,支持将视频片段在云端进行裁剪并拼…