IO流——缓冲流

缓冲流

  • 缓冲流作用:对原始流进行包装,以提高原始流读写数据的性能

字节缓冲流

  • 作用:提高字节流读写数据的性能
  • 原理:字节缓冲输入流自带了8KB的缓冲池,字节缓冲输出流也自带了8KB的缓冲池
构造器说明
public BufferedInputStream​(InputStream is)把低级的字节输入流包装成一个高级的缓冲字节输入流,从而提高读数据的性能
public BufferedOutputStream​(OutputStream os)把低级的字节输出流包装成一个高级的缓冲字节输出流,从而提高写数据的性能

演示

public class BufferedInputStreamTest1 {public static void main(String[] args) {try (// 创建字节输入流管道与源文件接通InputStream is = new FileInputStream("oop3\\src\\com\\ligemanyin\\_IO\\BufferedStream\\BufferedInputTest.txt");// 定义一个字节缓冲输入流包装原始的字节输入流InputStream bis = new BufferedInputStream(is);// 创建字节输出流管道与目标文件接通OutputStream os = new FileOutputStream("oop3\\src\\com\\ligemanyin\\_IO\\BufferedStream\\BufferedOutputTest.txt");// 定义一个字节缓冲输出流包装原始的字节输出流OutputStream bos = new BufferedOutputStream(os);) {byte[] buffer = new byte[1024];int len;while ((len = bis.read(buffer)) != -1) {bos.write(buffer, 0, len);}System.out.println("复制完成");} catch (Exception e) {e.printStackTrace();}}
}

字符缓冲流

BufferedReader(字符缓冲输入流)

  • 作用:自带8KB(8192字节)的字符缓冲池,可以提高字符输入流读取字符数据的性能
构造器说明
public BufferedReader(Reader r)把低级的字符输入流包装成字符缓冲输入流管道,从而提高字符输入流读字符数据的性能

字符缓冲输入新增功能:按照行读取字符

方法说明
public String readLine()读取一行数据返回,如果没有数据可读了,则返回null

演示

public class BufferReaderTest {public static void main(String[] args) {try (Reader reader = new FileReader("oop3\\src\\com\\ligemanyin\\_IO\\BufferedStream\\BufferedReaderTest.txt");BufferedReader bufferedReader = new BufferedReader(reader);) {String line;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}} catch (Exception e) {e.printStackTrace();}}
}

BufferedWriter(字符缓冲输出流)

  • 作用:自带8K的字符缓冲池,可以提高字符输出流写字符数据的性能
构造器说明
public BufferedWriter(Writer r)把低级的字符输出流包装成一个高级的缓冲字符输出流管道,从而提高字符输出流写数据的性能

字符缓冲输出流新增的功能:换行

方法说明
public void newLine()换行

演示

public class BufferedWriterTest {public static void main(String[] args) {try (Writer writer = new FileWriter("oop3\\src\\com\\ligemanyin\\_IO\\BufferedStream\\BufferedWriterTest.txt", true);BufferedWriter bufferedWriter = new BufferedWriter(writer);) {bufferedWriter.write("风絮飘残已化萍,泥莲刚倩藕丝萦。");bufferedWriter.newLine();bufferedWriter.write("珍重别拈香一瓣,记前生。");bufferedWriter.newLine();bufferedWriter.write("人到情多情转薄,而今真个悔多情。");bufferedWriter.newLine();bufferedWriter.write("又到断肠回首处,泪偷零。");} catch (IOException e) {e.printStackTrace();}}
}

案例

将《出师表》的文章顺序恢复到一个新文件中

public class SortWriteCSB {public static void main(String[] args) {// 恢复出师表的顺序到新文件中// 使用集合存储每行数据List<String> list = new ArrayList<>();try (// 定义缓存字符输入流管道和缓存字符输出流管道分别与源文件及目标文件接通Reader reader = new FileReader("oop3\\src\\com\\ligemanyin\\_IO\\BufferedStream\\csb.txt");Writer writer = new FileWriter("oop3\\src\\com\\ligemanyin\\_IO\\BufferedStream\\csb2.txt");BufferedReader br = new BufferedReader(reader);BufferedWriter bw = new BufferedWriter(writer);) {String s;// 读取源文件中的数据并存储到集合中while ((s = br.readLine()) != null) {list.add(s);}// 排序list.sort((o1, o2) -> o1.charAt(0) - o2.charAt(0));// 写入目标文件for (String str : list) {bw.write(str);bw.newLine();}} catch (Exception e) {e.printStackTrace();}}
}

出师表文本文件内容:

3.侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
8.愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。
4.将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
2.宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。
1.先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
9.今当远离,临表涕零,不知所言。
6.臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
7.先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
5.亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。

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

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

相关文章

JAVA爬虫系列

目录 准备工作 yml 1.入门程序&#xff08;获取到静态页面&#xff09; 2.HttpClient---Get 2.1 修改成连接池 3.HttpClient---Get带参数 3.1 修改成连接池 4.HttpClient---Post 4.1 修改成连接池 5.HttpClient---Post带参数 6.HttpClient-连接池 7.设置请求信息 …

蓝桥真题——-小蓝重组质数(全排列和质数判断)

小蓝有一个十进制正整数n&#xff0c;其不包含数码0&#xff0c;现在小蓝可以任意打乱数码的顺序&#xff0c;小蓝想知道通过打乱数码顺序,n 可以变成多少个不同的质数。 #include <iostream> #include<bits/stdc.h> using namespace std; bool isprime(int n) {if…

讯鹏Andon系统解决方案帮助工厂打造生产过程透明化

在现代制造业中&#xff0c;高效透明的生产管理模式对企业的发展至关重要。Andon系统作为一种解决方案&#xff0c;通过软硬件结合的方式&#xff0c;为企业打造了高效透明的生产管理模式&#xff0c;帮助企业实现生产过程的优化和管理的可视化。 Andon系统的软硬件结合为企业提…

swiftUI中的可变属性和封装

swiftUI的可变属性 关于swift中的属性&#xff0c;声明常量使用let &#xff0c; 声明变量使用var 如果需要在swiftUI中更改视图变化那么就需要在 var前面加上state 。 通过挂载到state列表 &#xff0c;从而让xcode找到对应的改变的值 例子&#xff1a; import SwiftUIstruc…

【兆易创新GD32H759I-EVAL开发板】图像处理加速器(IPA)的应用

GD32H7系列的IPA&#xff08;Image Pixel Accelerator&#xff09;是一个高效的图像处理硬件加速器&#xff0c;专门设计用于加速图像处理操作&#xff0c;如像素格式转换、图像旋转、缩放等。它的优势在于能够利用硬件加速来实现这些操作&#xff0c;相比于软件实现&#xff0…

BLE---Service interoperability requirements

0 Preface/Foreword references: Bluetooth core specification V5.4 definition&#xff1a;定义 declaration&#xff1a;声明 1 service definition&#xff08;服务定义&#xff09; 服务定义&#xff08;definition&#xff09;&#xff1a;必须包含服务声明(declara…

【JavaScript】JavaScript 运算符 ① ( 运算符分类 | 算术运算符 | 浮点数 的 算术运算 精度问题 )

文章目录 一、JavaScript 运算符1、运算符分类2、算术运算符3、浮点数 的 算术运算 精度问题 一、JavaScript 运算符 1、运算符分类 在 JavaScript 中 , 运算符 又称为 " 操作符 " , 可以实现 赋值 , 比较 > < , 算术运算 -*/ 等功能 , 运算符功能主要分为以下…

安卓UI面试题 6-10

6. SurfaceView & View 的区别?SurfaceView是在一个新启的单独线程中可以重新绘制画面,而View必须在UI的主线程中更新画面。在UI的主线程中更新画面,可能会引发一些问题,比如你更新画面的时间过长,那么你的主UI线程会被你正在画的函数阻塞。那么将无法响应按键,触屏等…

MATLAB中visdiff函数用法

目录 语法 说明 示例 比较两个文件 比较两个文件并指定类型 发布比较报告 visdiff函数的功能是比较两个文件或文件夹。 语法 visdiff(filename1,filename2) visdiff(filename1,filename2,type) comparison visdiff(___) 说明 visdiff(filename1,filename2) 打开比较工…

海格里斯HEGERLS托盘搬运机器人四向车引领三维空间集群设备柔性运维

随着市场的不断迅猛发展变化&#xff0c;在物流仓储中&#xff0c;无论是国内还是海外&#xff0c;都对托盘式解决方案需求量很大。顾名思义&#xff0c;托盘式解决方案简单理解就是将产品放置在托盘上进行存储、搬运和拣选。 面对托盘式方案需求&#xff0c;行业中常见的方案是…

面试常问,ADC,PWM

一 PWM介绍 pwm全名&#xff08;Pulse Width Modulation&#xff09;&#xff1a;脉冲宽度调制 在具有惯性的系统中&#xff0c;可以通过对一系列脉冲的宽度进行调制&#xff0c;来等效地获得所需要的模拟参量&#xff0c;常应用于电机控速等领域。PWM一定程度上是数字到模拟…

Java使用Selenium实现自动化测试以及全功能爬虫

前言 工作中需要抓取一下某音频网站的音频&#xff0c;我就用了两个小时学习弄了一下&#xff0c;竟然弄出来&#xff0c;这里分享记录一下。 springboot项目 Selenium Java使用Selenium实现自动化测试以及全功能爬虫 前言1 自动化测试2 java中集成Selenium3 添加浏览器驱动4…

【linux】进程(一)

先看预备知识&#xff0c;对本篇文章更有帮助。 目录 进程概念&#xff1a;了解动态运行的概念&#xff1a;进程的本身内部属性&#xff1a;启动进程&#xff1a;关闭进程&#xff1a; 如何创建进程&#xff1a;进程状态&#xff1a;直接看进程状态&#xff1a;僵尸进程与孤儿…

llamma笔记:部署Llama2

1 申请Llama2 许可 Download Llama (meta.com) 地址似乎不能填中国 1.1 获取url 提交申请后&#xff0c;填的那个邮箱会受到一封meta发来的邮件&#xff0c;打码部分的url&#xff0c;之后会用得上 2 ubuntu/linux 端部署Llama2 2.1 git clone Llama2的github 仓库 bash g…

每日一题 第五期 洛谷 图的遍历

图的遍历 题目描述 给出 N N N 个点&#xff0c; M M M 条边的有向图&#xff0c;对于每个点 v v v&#xff0c;求 A ( v ) A(v) A(v) 表示从点 v v v 出发&#xff0c;能到达的编号最大的点。 输入格式 第 1 1 1 行 2 2 2 个整数 N , M N,M N,M&#xff0c;表示点数…

Vue3 使用vite进行调试

通过此篇可以学到&#xff1a; 如何在vue3vite中代理到服务端地址如何修改项目本地启动的端口如何可以使用本机ip进行访问本地地址 修改vite.config.ts文件 import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite import vue from vitejs/…

git基础命令(四)之分支命令

目录 基础概念git branch-r-a-v-vv-avv重命名分支删除分支git branch -h git checkout创建新的分支追踪远程分支同时切换到该分支创建新的分支并切换到该分支撤销对文件的修改&#xff0c;恢复到最近的提交状态&#xff1a;丢弃本地所有修改git checkout -h git merge合并指定分…

log4rs测试

引入crate&#xff1a; log4rs {version "1.3.0"} log {version "0.4.20"} 配置文件 和Cargo.toml同级创建log4rs.yml&#xff0c;内容如下&#xff1a; refresh_rate: 30 seconds appenders:stdout:kind: consolerollingfile:kind: rolling_filep…

【yolo检测模型出现大量误报】

文章目录 1.可能需要针对以下几个方面进行优化和调整&#xff1a;2.出现大量误报会直接导致精确率和准确率明显下降。3.解决办法&#xff0c;采用最简单的样本均衡3.1.样本均衡3.2.添加负样本 1.可能需要针对以下几个方面进行优化和调整&#xff1a; 数据集质量&#xff1a; 确…

ASP.NET Mvc+FFmpeg+Video实现视频转码

目录 首先&#xff0c;做了视频上传的页面&#xff1a; FFmpeg&#xff1a;视频转码 FFmpegHelper工作类&#xff1a; 后台控制器代码&#xff1a; 前端视图代码&#xff1a; 参考文章&#xff1a; 首先&#xff0c;做了视频上传的页面&#xff1a; 借鉴了这篇文章 ASP.…