当前位置: 首页 > news >正文

Java学习-IO流-字节缓冲流

Java学习-IO流-字节缓冲流

						 IO流体系↙                  ↘字节流 						   字符流↙         ↘                   ↙      ↘InputStream      OutputStream 	 Reader 	 Writer↓                ↓             ↓           ↓
FileInputStream  FileOutputStream  FileReader  FileWriter

FileInputStream、FileOutputStream、FileReader、FileWriter 称之为基本流
高级流:缓冲流、转换流、序列化流、打印流、压缩流、Commons-io
缓冲流:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter

缓冲流

                       缓冲流↙                  ↘字节缓冲流                 字符缓冲流↙        ↘                ↙        ↘Buffered        Buffered       Buffered      Buffered
InputStream    OutputStream      Reader        Writer
字节缓冲输入流  字节缓冲输出流  字符缓冲输入流  字符缓冲输出流

字节缓冲流

底层自带长度为8192的缓冲区提高性能

public BufferedInputStream(InputStream is):把基本流包装成高级流,提高读取数据性能
public BufferedOutputStream(OutputStream os):把基本流包装成高级流,提高写出数据性能

练习:利用字节缓冲流拷贝文件

BufferedInputStream bis = new BufferedInputStream(new FileInputStream("..\\xx.txt"));
BufferedOutputStream bis = new BufferedOutputStream(new FileOutputStream("..\\copy.txt"));
int b;
while((b=bis.read())!=-1){bos.write(b);}
bos.close();
bis.close();

BufferedInputStream 的缓冲区

public BufferedInputStream(InputStream in){this(in,DEFAULT_BUFFER_SIZE);//DEFAULT_BUFFER_SIZE=8192
}
public BufferedInputStream(InputStream in,int size){super(in);if(size<=0){throw new IllegalArgumentException("BUffer size <= 0");}buf = new byte[size];//缓冲区
}

为什么只需关闭高级流,不需要关闭基本流
高级流底层关闭了基本流

public void close() throws IOException{...finally{if(flushException == null){out.close();}//关闭基本流else{try{out.close();}//关闭基本流...}}
}

字节缓冲流拷贝文件(一次读写多个字节)

BufferedInputStream bis = new BufferedInputStream(new FileInputStream("..\\xx.txt"));
BufferedOutputStream bis = new BufferedOutputStream(new FileOutputStream("..\\copy.txt"));
byte[] bytes = new byte[1024];
int len;
while((len=bis.read(bytes))!=-1){bos.write(bytes,0,len);}
bos.close();
bis.close();

字节缓冲流的读写原理

数据源→基本流→缓冲输入流→内存→缓冲输出流→基本流→文件

相关文章:

Java学习-IO流-字节缓冲流

Java学习-IO流-字节缓冲流 IO流体系↙ ↘字节流 字符流↙ ↘ ↙ ↘InputStream OutputStream Reader Writer↓ ↓ ↓ ↓ FileInputStream FileOutputStream FileRe…...

C++这么难,为什么我们还要学习C++?

前言 C 可算是一种声名在外的编程语言了。这个名声有好有坏&#xff0c;从好的方面讲&#xff0c;C 性能非常好&#xff0c;哪个编程语言性能好的话&#xff0c;总忍不住要跟 C 来单挑一下&#xff1b;从坏的方面讲&#xff0c;它是臭名昭著的复杂、难学、难用。当然&#xff…...

C#底层库--业务单据号生成器(定义规则、自动编号、流水号)

系列文章 C#底层库–MySQL数据库访问操作辅助类&#xff08;推荐阅读&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/126886379 C#底层库–JSON帮助类_详细&#xff08;序列化、反序列化、list、datatable&#xff09; 本文链接&…...

vue3项目练习大全(附github源码)

vue慢慢的成为了前端最受欢迎的框架之一&#xff0c;在很多项目之中开发都能用得到&#xff0c;如今也已经发展到3.0了&#xff0c;可能是因为这个框架可以提高工作效率&#xff0c;因此受到大家的追捧&#xff0c;在之前的文章里面也说过&#xff0c;2019年&#xff0c;大前端…...

SWMM从入门到实践教程 01 SWMM软件介绍

文章目录1 软件介绍2 软件面板2.1 主菜单2.1.1文件菜单&#xff08;File&#xff09;2.1.2 编辑菜单&#xff08;Edit&#xff09;2.1.3 视图菜单&#xff08;View&#xff09;2.1.4 工程菜单&#xff08;Project&#xff09;2.1.5 报告菜单&#xff08;Report&#xff09;2.1.…...

CSS中的text-overflow属性详解 (控制文字在一行显示,超出部分加省略号)

text-overflow: ellipsis; 表示当文本内容超出所在容器的宽度时&#xff0c;用省略号来代替超出的部分。white-space:nowrap; 表示文本不换行。overflow: hidden; 表示超出容器的内容将被隐藏。 将这三个加入需要控制的css的属性中&#xff0c;就能控制文字在一行显示&#xff…...

基于pytorch实现模型剪枝

一,剪枝分类二,PyTorch 的剪枝三,总结参考资料一,剪枝分类 所谓模型剪枝,其实是一种从神经网络中移除"不必要"权重或偏差(weigths/bias)的模型压缩技术。关于什么参数才是“不必要的”,这是一个目前依然在研究的领域。 1.1,非结构化剪枝 非结构化剪枝(U…...

写出高质量的前端代码之消除代码中的重复

软件开发中&#xff0c;有个很重要的DRY原则&#xff0c;即Dont Repeat Yourself&#xff0c;也就是不要重复自己。 重复的代码会带来以下问题&#xff1a; 开发效率低&#xff0c;重复造轮子不同人开发的同一类功能&#xff0c;质量层次不齐修改问题时可能会遗漏&#xff0c…...

怎么从零开始学黑客,黑客零基础怎么自学

很多朋友对成为黑客很感兴趣&#xff0c;很大原因是因为看到电影中黑客的情节觉的特别的酷&#xff0c;看到他们动动手指就能进入任何系统&#xff0c;还有很多走上黑客之路的朋友仅仅是因为自己的qq被盗了&#xff0c;或者游戏里的装备被别人偷了&#xff0c;想要自己盗回来&a…...

量化择时——资金流择时策略(第1部分—因子测算)

文章目录资金流模型概述资金流模型的有效性逻辑资金流向指标MFI&#xff08;Money Flow Index&#xff09;MFI指标测算测算规则测算结论资金流模型概述 通常&#xff0c;资金流是一种反映股票供给信息的指标&#xff0c;宏观上来讲&#xff0c;我们知道一个道理&#xff1a;僧…...

Openwrt中动态IPV6 防火墙的正确设置方法

环境&#xff1a;光猫桥接公网IPV6 问题&#xff1a;动态IPV6地址不知道怎么设置防火墙 解决办法&#xff1a;模糊匹配前缀&#xff0c;特定后缀 背景&#xff1a;将家中光猫桥接后&#xff0c;获得了公网的IPV6地址&#xff0c;可以从外部用IPV6访问家中的设备&#xff0c;但I…...

JS的基本数据类型和引用数据类型

ES6 引入了一种新的原始数据类型 Symbol&#xff0c;表示独一无二的值。它是 JavaScript 语言的第七种数据类型&#xff0c;前六种是&#xff1a;Undefined、Null、布尔值&#xff08;Boolean&#xff09;、字符串&#xff08;String&#xff09;、数值&#xff08;Number&…...

mars3d基础项⽬常⻅报错

1.在⼤家使⽤mars3d基础项⽬的时候经常遇到这个报错&#xff0c;截图如下 回答&#xff1a; 1.原因是因为使⽤了cnpm安装依赖&#xff0c;导致了⼀些依赖问题 2.解决⽅式也很简答&#xff0c;重新使⽤ npm 或 yarn 或 pnpm安装依赖即可 2.本地加载地图时&#xff0c;出现报错回…...

【阿旭机器学习实战】【35】员工离职率预测---决策树与随机森林预测

【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例&#xff0c;欢迎点赞&#xff0c;关注共同学习交流。 本文的主要任务是通过决策树与随机森林模型预测一个员工离职的可能性并帮助人事部门理解员工为何离职。 目录1.获取数据2.数据预处理3.分析数据3.…...

Python学习-----模块4.0(json字符串与json模块)

目录 1.json简介&#xff1a; 2.json对象 3.json模块 &#xff08;1&#xff09;json.dumps() 函数 &#xff08;2&#xff09;json.dumps() 函数 &#xff08;3&#xff09;json.loads() 函数 (4) json.load() 函数 4.总结&#xff1a; 1.json简介&#xff1a; SON(…...

open3d最大平面检测,平面分割

1.点云读入 读入文件&#xff08;配套点云下载链接&#xff09; # 读取点云 pcd o3d.io.read_point_cloud("point_cloud_00000.ply")配套点云颜色为白色&#xff0c;open3d的点云显示默认背景为白色&#xff0c;所以将点云颜色更改为黑色 pcd.colors o3d.utilit…...

【C++】4.类和对象(下)

1.再谈构造函数 1赋值 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;}private:int _year;int _month;int _day; };构造函数体中的语句只能将其称作为赋初值&#xff0c;而不能称作初始化。因为初始化只能初始化一次&#xf…...

自动驾驶仿真:ECU TEST 、VTD、VERISTAND连接配置

文章目录一、ECU TEST 连接配置简介二、TBC配置 test bench configuration三、TCF配置 test configuration提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、ECU TEST 连接配置简介 1、ECU TEST&#xff08;简称ET&#xff09;&#xff0c;用于HIL仿…...

postgres数据库连接管理

1.连接命令psql -d postgres -h 10.0.0.51. -p 1921 -U postgres&#xff08;-d指定数据库名字&#xff09;2.pg防火墙介绍&#xff08;pg实例层面的权限控制&#xff09;pg_hba.conf文件配置文件分为5部分&#xff1a;配置示例#TYPE DATABASE USER ADDRESS METHODhost all loc…...

【华为OD机试模拟题】用 C++ 实现 - 环中最长子串(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...