[二十一]JavaIO之BufferedReader 与 BufferedWriter
功能简介
其实本质还是缓冲二字
他们内部都有一个缓冲区,就是一个字符数组
BufferedReader 会尽可能多的将数据读取到自己的缓冲区,然后提供的read方法从缓冲区读取
BufferedWriter 会先将数据写入到自己的内部缓冲区,从而写入的效率将会大大提升,然后批量的将数据实际写入
|
BufferedReader BufferedWriter 也是装饰器模式 不过他是简化版的装饰器模式 没有抽象的装饰器角色 BufferedReader 和 BufferedWriter 既充当了抽象的装饰器角色,又充当了装饰器实体角色 从下面的声明以及内部变量能看出来一点端倪(不是说 是你还有你 就一定是装饰器,还是要根据下面的业务逻辑的) 是你还有你 而且,他的确是装饰器模式,下面会简单介绍 |
![]() |
构造方法
关键成员变量![]() |
首先: BufferedReader 需要 Reader 作为参数 BufferedWriter 需要 Writer 作为参数 其次: 可选的设置缓冲区的大小,不设置则使用默认值 所以, BufferedReader 和 BufferedWriter 各有两个构造方法
|
BufferedReader 其他方法
read |
提供了两个版本的read方法 |
int read()
读取单个字符
int read(char[] cbuf, int off, int len)
将字符读入数组的某一部分,写入len个 到cbuf 中的off偏移量处
|
之所以说BufferedReader是装饰器模式不仅仅是"是你还有你" read内部,实际上使用的是fill()用来读取真正的数据到缓冲区内 fill 里面用了 Reader in ![]() |
支持标记 |
markSupported 返回true
mark
reset
|
String readLine() 读取一个文本行 通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行 |
lines方法 jdk8 中新增的方法 返回一个由 BufferedReader中的line组成的Stream |
![]() |
BufferedReader也例行提供了
skip
ready
close
|
BufferedWriter 其他方法
write |
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分
void write(int c)
写入单个字符。
void write(String s, int off, int len)
写入字符串的某一部分
|
public void newLine()
throws IOException
写入一个行分隔符 行分隔符字符串由系统属性 line.separator 定义,并且不一定是单个新行 ('\n') 符 |
close 与 flush 既然是缓冲写字符 所以必然要有有效的刷新操作,内部通过out来进行刷新 close方法会将缓冲区的数据全部刷新,然后out置空 |
总结
[二十一]JavaIO之BufferedReader 与 BufferedWriter的更多相关文章
- java基础知识回顾之javaIO类---BufferedReader和BufferedWriter
使用了装饰设计模式:此类的设计是为了提高流操作数据的效率.思想就是定义容器将数据进行临时存储,对于缓冲区对象,其实就是将这个容器进行了分装,并提供了更高效的操作方法. BufferReader: pa ...
- Java基础---Java---IO流-----BufferedReader、BufferedWriter、缓冲区、装饰设计模式及和继承的区别
IO流 IO流用来处理设备之间的数据传输 java对数据的操作是过流的方式 流按操作数据分为两种:字节流与字符流 流按流向分为:输入流,输出流. IO流常用基类 字节流的抽象基类:InputStrea ...
- 节点流和处理流(BufferedReader和BufferedWriter,BufferedInputStream和BufferedOutputStream,ObjectlnputStream和objectOutputStream)
一.基本介绍: 1.节点流可以从一个特定的数据源读写数据,如FileReader. FileWriter 如图:字节流是直接对数据源(文件,数组之类存放数据的地方)进行操作 2.处理流(也叫包装流)是 ...
- Java-IO流之BufferedReader 和BufferedWriter的使用和原理
BufferedReader和BufferedWriter出现的目的是为了对FileReader以及FileWriter的读写操作进行增强,而怎么增强呢,原理类似于使用StringBuilder,是把 ...
- Java IO(十八) BufferedReader 和 BufferedWriter
Java IO(十八) BufferedReader 和 BufferedWriter 一.介绍 BufferedReader 和 BufferedWriter 是字符缓冲流,分别继承自 Reader ...
- 无废话ExtJs 入门教程二十一[继承:Extend]
无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...
- BufferedReader与BufferedWriter读写中文乱码问题
正常读写英文时用""""没问题 FileReader fre = new FileReader("E:\\TEST\\readText.txt&quo ...
- Bootstrap <基础二十一>徽章(Badges)
Bootstrap 徽章(Badges).徽章与标签相似,主要的区别在于徽章的边角更加圆滑. 徽章(Badges)主要用于突出显示新的或未读的项.如需使用徽章,只需要把 <span class= ...
- 【圣诞特献】Web 前端开发精华文章推荐【系列二十一】
<Web 前端开发精华文章推荐>2013年第九期(总第二十一期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 ...
随机推荐
- ssm框架各自的作用
- CommonsChunkPlugin
CommonsChunk 插件的作用就是提取代码中的公共代码,然后将公共模块打包到一个独立的文件中,以便在其它的入口和模块中使用,原理就是把多个入口共同的依赖都给定义成一个新入口 多种打包情况: 单一 ...
- dedecms给图片加水印覆盖整张图片
位置: /include/image.class.php $wmwidth = $imagewidth - $logowidth; $wmheight = $imageheight - $logohe ...
- (一) sublime安装和使用
1 下载安装sublime 可以破解也可以不破解 2 html基础架子自动生成插件Emmet的安装 3 Emmet 安装失败解决 4 快捷键设置和汇总 4 其他sublime插件汇总
- sql_update
学习: http://www.runoob.com/mysql/mysql-tutorial.html replace: update table_name set column = replace ...
- 30 ArcGIS 许可管理器常见问题(持续更新中……)
一.[单机版] 1.1.ArcMap 1.2.ArcGIS Pro 错误一 ArcGIS Pro单机许可安装授权,在Configure Authorization界面报“This functional ...
- win 10 亮度调节不能使用了
我的解决办法的前提:装过teamviewer ,然后每次系统推送大升级似乎都会无法调节亮度,如果不是这个前提自己找别的办法吧 teamviewer 就是一个流氓软件. 每次更新之后都末名奇妙的不能调节 ...
- 已知一个字符串S 以及长度为n的字符数组a,编写一个函数,统计a中每个字符在字符串中的出现次数
import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 21:04 * @description ...
- 通用类 对象Excel互转
public class ExcelHelper { public void Demo(string filePath) { if (File.Exists(filePath)) File.Delet ...
- PTA第四次作业
题目 7-1 计算职工工资 1.设计思路 (1)第一步:观察题意了解各个参数与所需函数在题目中的意义: 第二步:设计算法编写函数,让函数的功能实现题目中所需的功能: 第三步:运行程序检测是否错误. ( ...