IO流 之 缓冲流(字节缓冲流和字符缓冲流)

在这里插入图片描述
缓冲流对原始流进行了包装,以提高原始流读写数据的性能。

字节缓冲流(BufferedInputStream和BufferedOutputStream)

在这里插入图片描述
字节缓冲流在内存中提供了一个默认为8kb的区域,用于缓冲,当流开始时,先读取一个8kb的内容缓存到内存,然后再对其进行操作,速度会变快,因为字节缓冲流利用缓冲区将数据暂时存储起来,减少了频繁地进行读写操作的次数,从而提高了读写的效率。相较于直接读写字节流,使用字节缓冲流可以减少系统调用次数,提升性能。就是直接操作硬盘的次数变少了。

在这里插入图片描述

而缓存的大小也是可以自定义的 但默认时8kb

下面时一个拷贝图片的代码示范:

package day0927;
import java.io.*;
public class demo9 {public static void main(String[] args) {try (FileInputStream  in = new FileInputStream("D:\\asdf.jpg");//将低级流放入高级流InputStream bin = new BufferedInputStream(in);FileOutputStream out = new FileOutputStream("E:\\asdf.jpg");OutputStream bout = new BufferedOutputStream(out)){byte[] buffer = new byte[1024];int b;while ((b = bin.read(buffer))!= -1){bout.write(buffer,0,b);}} catch (Exception e) {throw new RuntimeException(e);}}
}

字符缓冲流(BufferedInputStream和BufferedOutputStream)

在这里插入图片描述
字符缓冲流提供了一个8kb的默认缓冲区域,先将字符读取8kb到内存,再在内存中进行操作,然后再对其进行操作,速度会变快,因为字符缓冲流利用缓冲区将数据暂时存储起来,减少了频繁地进行读写操作的次数,从而提高了读写的效率。相较于直接读写字节流,使用字符缓冲流可以减少系统调用次数,提升性能。就是直接操作硬盘的次数变少了。
在这里插入图片描述
在这里插入图片描述
下面提供字符缓冲流复制txt文件的代码示范:

package day0927;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class demo10 {public static void main(String[] args) {try (FileReader fileReader = new FileReader("src\\a.txt");BufferedReader br = new BufferedReader(fileReader);FileWriter fileWriter = new FileWriter("src\\d.txt");BufferedWriter bw = new BufferedWriter(fileWriter);){String b;//readLine()一行一行读取文本,如没有内容后将返回nullwhile ((b = br.readLine()) != null){System.out.println(b);bw.write(b);//newLine()换行方法bw.newLine();}} catch (Exception e) {throw new RuntimeException(e);}}
}

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

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

相关文章

blender快捷键

1, shift a 添加物体 2,ctrl alt q 切换四格视图 3, ~ 展示物体的各个视图按钮,(~ 就是tab键上面的键) 4,a 全选,全选后,点 ctrl 鼠标框选 减去已经选择的&#xff1b…

车道线分割检测

利用opencv,使用边缘检测、全局变化梯度阈值过滤、算子角度过滤、HLS阈值过滤的方法进行车道线分割检测,综合多种阈值过滤进行检测提高检测精度。 1.利用cv2.Sobel()计算图像梯度(边缘检测) import cv2 import numpy as np import matplotlib.pyplot a…

skywalking入门

参考: https://www.jianshu.com/p/ffa7ddcda4ab 参考: https://developer.aliyun.com/article/1201085 skywalking(APM) 调用链路分析以及应用监控分析工具 Skywalking主要由三大部分组成:agent、collector、webapp-…

一文详解 JDK1.8 的 Lambda、Stream、LocalDateTime

Lambda Lambda介绍 Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。 Lambda表达式的结构 一个 Lamb…

十六.镜头知识之工业镜头的质量判断因素

十六.镜头知识之工业镜头的质量判断因素 文章目录 十六.镜头知识之工业镜头的质量判断因素1.分辨率(Resolution)2.明锐度(Acutance)3.景深(DOF):4. 最大相对孔径与光圈系数5.工业镜头各参数间的相互影响关系5.1.焦距大小的影响情况5.2.光圈大小的影响情况5.3.像场中…

CISSP学习笔记:人员安全和风险管理概念

第二章 人员安全和风险管理概念 2.1 促进人员安全策略 职责分离: 把关键的、重要的和敏感工作任务分配给若干不同的管理员或高级执行者,防止共谋工作职责:最小特权原则岗位轮换:提供知识冗余,减少伪造、数据更改、偷窃、阴谋破坏和信息滥用的风险&…

点云从入门到精通技术详解100篇-基于深度学习的三维植物点云分割网络(续)

目录 3.7定量衡量指标 3.8 语义分割结果 3.9实例分割结果 3.10 与其他方法的对比 3.11 剥离实验

快速幂矩阵-python

看了大神讲解,理论在这里:快速幂算法(全网最详细地带你从零开始一步一步优化)-CSDN博客 例题:求整数 base 的 整数 power 次方,对整数 num_mod 取幂。 python 代码如下: import timedef norm…

LabVIEW在运行时调整表控件列宽

LabVIEW在运行时调整表控件列宽 如何在LabIEW中运行时调整表控件的列宽大小? 在VI运行时,有两种不同的方法可以更改表中列的宽度。首先,可以使用鼠标手动更改它们;其次,可以从框图中以编程方式更改它们。 手动更改列宽 只有在…

设计模式——8. 代理模式

1. 说明 代理模式(Proxy Pattern)是一种结构型设计模式,它允许一个对象(代理对象)充当另一个对象(真实对象)的接口,以控制对该对象的访问。代理对象在访问真实对象时可以执行一些额外的操作,例如权限验证、懒加载、缓存、日志记录等,而无需修改真实对象的代码。 代…

IPsec_SSL VPN身份鉴别过程简要

一、IPsec VPN身份鉴别(参考国密标准《GMT 0022-2014 IPsec VPN技术规范》) IKE第一阶段(主模式) “消息2”由响应方发出,消息中具体包含一个SA载荷(确认所接受的SA提议)、响应方的签名证书和…

MySQL 运维常用脚本

常用功能脚本 1.导出整个数据库 mysqldump -u 用户名 -p –default-character-setlatin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件…

在HTTP请求中安全传输base64编码的字符串

前言 base64是一种常见的的编码格式,它可以把二进制数据编码成一个由大小写英文字母(a-zA-Z)、阿拉伯数字(0-9),以及三个特殊字符、/、组成的字符串。 问题 但是在URL传输中,、/、这三个特殊…

基于AI图像识别的智能缺陷检测系统,在钢铁行业的应用-技术方案

目录 概述 废钢智能检判方案简介 废钢智能检判系统优势及价值 废钢人工检判过程 废钢等级检判标准 废钢检判结果 智能检判方案-废钢智能检判算法 算法一:废钢等级识别算法 算法二:不合格料的位置识别算法 算法三:不合格料的类型识别…

第一百五十七回 SliverList组件

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了沉浸式状态栏相关的内容,本章回中将介绍SliverList组件.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里介绍的SliverList组件是一种列表类组件,类似我们之前介绍过的L…

【再识C进阶3(下)】详细地认识字符分类函数,字符转换函数和内存函数

前言 💓作者简介: 加油,旭杏,目前大二,正在学习C,数据结构等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏&#x1…

全网最全面最精华的设计模式讲解,从程序员转变为工程师的第一步

前言 现代社会,技术日新月异,要想跟上技术的更新就必须不断学习,而学习技术最有效方式就是阅读优秀的源码,而优秀的源码都不是简单的逻辑堆积,而是有很灵活的设计模式应用其中,如果我们不懂设计模式&#…

单例模式:饿汉式

单例模式全局仅一个实例,用于获取公共的内容 头文件mglobalinfomgr.h class MGlobalInfoMgr {MGlobalInfoMgr();~MGlobalInfoMgr(); public:static MGlobalInfoMgr* GetInstance(); private:static MGlobalInfoMgr* _instance; }; 源文件mglobalinfomgr.cpp MGl…

idea2023根据表自动生成+springboot跑起来

idea安装插件 idea中显示数据库连接 就可以看到如下界面 选中你想生成的表,右键如下操作 如上就有了所有需要的后端代码 生成后,要查看一下mapper.xml中的文件是否 正确,若有误请先去修改,例如我的版本下生成了xml文件中缺乏…

基于SpringBoot的银行账目账户管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…