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.xdnf.cn/news/146204.html

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

相关文章

CCF CSP认证 历年题目自练Day18

CCF CSP认证 历年题目自练Day18 题目一 试题编号: 201809-1 试题名称: 卖菜 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这…

Spring的注解开发-非自定义Bean的配置

非自定义Bean注解开发 非自定义Bean不能象自定义Bean一样使用Component注解及其衍生注解进行管理,非自定义Bean要通过工厂的方式进行实例化,使用Bean标注即可,Bean的属性为beanName,使用Bean注解作用在方法中,通过定义…

视觉人机器视觉线下培训遵循十大原则

1.​上课期间,自习时间没收手机,偷偷使用手机,将会被通报严重批评。 2.完善的教学设备,与具备现场落地设备要求。 3.教学与实操结合,老师教学的同时,要求你按照老师的效果,进行复现&#xff0…

Hello World!1分钟配置好你的Go环境

目录 一、简介为什么选择Golang?Golang与其他语言的对比核心特性应用场景社区和生态系统性能标准企业级应用 二、环境要求操作系统WindowsLinux/UnixmacOS 硬件需求其他依赖软件异常情况和处理方法 三、下载和安装GolangWindows系统使用官方安装包使用Chocolatey&am…

vue造轮子完整指南--npm组件包开发步骤

一、项目包文件的创建和初始化。 1. 新建项目包。 vue create <Project Name> //用于发布npm包的项目文件名 ps:一般选择自定义&#xff0c;然后不需要Vuex和Router&#xff0c;其他选项按自己实际情况选择安装即可。 2.修改原始src文件名、新增组件项目存放文件和修改…

小白继续深入学习C++

第1节 指针的基本概念 1、变量的地址&#xff1a; 变量是内存地址的简称&#xff0c;在C中&#xff0c;每定义一个变量&#xff0c;系统就会给变量分配一块内存&#xff0c;内存是有地址的。 C用运算符&获取变量在内存中的起始地址。 语法&#xff1a; &变…

【MySQL进阶】--- 存储引擎的介绍

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、什么…

[Spring] Spring5——IOC 简介(二)

目录 六、工厂 Bean&#xff08;Factory&#xff09; 1、普通 bean 2、工厂 bean 3、示例 七、Bean 的作用域 1、单例和多例 2、如何设置为单实例或多实例 八、Bean 的生命周期 1、生命周期 2、生命周期示例 3、Bean 的后置处理器 4、后置处理器示例 九、XML 的自…

c# 委托 事件 lambda表达式

委托 C/C中的函数指针实例&#xff1a; typedef int (*Calc)(int a, int b); //这里必须加括号 int Add(int a, int b) {return a b; } int Sub(int a, int b) {return a - b; } int main() {int x 100;int y 200;int z 0;Calc funcPoint1 &Add;Calc funcPoint2 &am…

全国排名前三的直播公司无锋科技入驻天府蜂巢成都直播产业基地

最近&#xff0c;全国排名前三的直播公司——无锋科技&#xff0c;正式宣布入驻位于成都的天府蜂巢直播产业基地&#xff0c;这一消息引起了业内人士的高度关注。成都直播产业基地一直是中国直播产业的重要地标之一&#xff0c;其强大的技术和资源优势为众多直播公司提供了广阔…

26 docker前后端部署

[参考博客]((257条消息) DockerNginx部署前后端分离项目(SpringBootVue)的详细教程_在docker中安装nginx实现前后端分离_这里是杨杨吖的博客-CSDN博客) (DockerNginx部署前后端分离项目(SpringBootVue)) 安装docker # 1、yum 包更新到最新 yum update # 2、安装需要的软件包…

csgo盲盒支付接口如何申请?

csgo盲盒支付接口如何申请&#xff1f;个人认为没什么特别难懂的&#xff01; 第一点&#xff1a;确定网站的基本功能&#xff01;每个网站的玩法大概都是一样的&#xff0c;无非是拆箱盲盒&#xff0c;ROLL房间、决斗、货物、生存和更换合同&#xff0c;然后有积分购物中心&am…

vue 实现数字验证码功能

需求&#xff1a;写了一个 手机发送验证码后 输入固定验证码的功能 封装成一个组件,如下: <template><div class"conts"><div class"box"><div class"code_list"><div :class"[ code_item, hideIndex 0 ? co…

Flutter笔记:滚动之-无限滚动与动态加载的实现

Flutter笔记 无限滚动与动态加载的实现 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/133342307 本文还…

分享10个必备的VS Code技巧和窍门,提高你的开发效率

目录 前言 1. 时间线视图&#xff1a;本地源代码控制 2. 自动保存&#xff1a;不再需要按Ctrl S 3. 使用命令面板进行任何操作 4、快速转到文件 5. 快速跳转指定行 6. 快速删除该行 7. 享受使用流畅的光标进行打字 8. 快速格式化代码 9. 使用多光标编辑功能节省时间…

【智能家居项目】裸机版本——项目介绍 | 输入子系统(按键) | 单元测试

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《智能家居项目》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f3c0;项目简介&#x1f3c0;输入子系统(按键)⚽应用层⚽设备层⚽ 内核层抽象层⚽…

flink选择slot

flink选择slot 在这个类里修改 package org.apache.flink.runtime.resourcemanager.slotmanager.SlotManagerImpl; findMatchingSlot(resourceProfile)&#xff1a;找到满足要求的slot&#xff08;负责从哪个taskmanager中获取slot&#xff09;对应上图第8&#xff0c;9&…

IDEA 使用

目录 Git.gitignore 不上传取消idea自动 add file to git撤销commit的内容本地已经有一个开发完成的项目&#xff0c;这个时候想要上传到仓库中 Git .gitignore 不上传 在项目根目录下创建 .gitignore 文件夹&#xff0c;并添加内容&#xff1a; .gitignore取消idea自动 add…

【OpenCV-Torch-dlib-ubuntu】Vm虚拟机linux环境摄像头调用方法与dilb模型探究

前言 随着金秋时节的来临&#xff0c;国庆和中秋的双重喜庆汇聚成一片温暖的节日氛围。在这个美好的时刻&#xff0c;我们有幸共同迎来一次长达8天的假期&#xff0c;为心灵充电&#xff0c;为身体放松&#xff0c;为未来充实自己。今年的国庆不仅仅是家国团聚的时刻&#xff…

STL容器

C STL STL实现原理及其实现 STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;&#xff0c;提供了六大组件&#xff0c;可以相互之间组合套用&#xff0c;这六大组件分别是&#xff1a;容器&#xff08;Containers&#xff09;&#xff0c;算法&a…