博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[十七]JavaIO之CharArrayReader 和 CharArrayWriter
阅读量:6589 次
发布时间:2019-06-24

本文共 1662 字,大约阅读时间需要 5 分钟。

功能简介

CharArrayReader  和 CharArrayWriter, 字符数组作为数据源的字符读写 
CharArrayReader 
CharArrayWriter 
只需要记住他们的根本, CharArray 是数据源的形式
读 CharArrayReader 需要接受一个字符数组作为参数    就是从CharArray 中读,所以需要一个字符数组
写 CharArrayWriter  就是写入到一个CharArray 中去,所以 它内部维护了一个字符数组
显然, 字符数组都是内存中的数据
他们的逻辑类似ByteArrayInputStream ByteArrayOutputStream,只不过一个是字节,一个是字符而已
看下字段对照,相比就能对于实现过程了解一二

CharArrayReader

要始终记着Reader的常规约定方法
read
读取一个字符或者读取字符到数组
mark
reset
markSupported
标记点相关
ready
类似available true 则保证不会阻塞,false则不保证一定阻塞
close
关闭流

构造方法

构造方法的本质就是  CharArrayReader的原理
从一个字符数组中读取数据,这个字符数组通过构造方法传入
注意:
字节数组不是复制而来的,引用直接指向
使用char buf[] 作为数据源
使用char buf[]中, off偏移量开始,  length长度个字符
作为数据源

read

提供了两个版本的read
读一个字符
或者读取字符 到指定的字符数组中的指定位置

标记功能

CharArray作为数据源,本身就是内存中的数据
所以只需要标志点,可以随意切换
自然支持标记功能

close

close方法没有太多实际的事情要做
只是缓冲区置空

CharArrayWriter

writer的常规约定
write
将指定的的字符 字符序列 String ,写入
append
追加指定的内容
flush
刷新
close
关闭

构造方法

CharArraywriter 内部维护了一个字符数组
构造方法主要就是对他进行初始化
默认大小是32
缓冲区会随向流中写入数据而自动增长
在调用write方法过程中
一旦大小超过,将会通过Arrays.copyOf  进行自动增长
增长是创建另外一个数组,原始数据全部拷贝过去
char buf[]
是实际存储数据的内部数组
count即是大小,也是下一个将要写入数据的下标索引
所以想要知道大小,直接返回count
想要重置缓冲区,直接count清零,下次从头开始写入即可

write方法

提供了三个版本的write

将指定内容写入输出流缓冲区   

public void write(int c)
将一个字符写入内部缓冲区
public void write(char c[], int off, int len)
将指定的len个字符写入内部缓冲区
public void write(String str, int off, int len)
将字符串的某一部分写入内部缓冲区

writeTo

将缓冲区内的内容写入到另外的字符流
过程很简单,直接调用参数out的write方法

flush 和close

flush 和close在字符输出流中并没有什么好做的

总结

CharArrayReader  和 CharArrayWriter, 字符数组作为数据源的字符读写
逻辑是类似ByteArrayInputStream ByteArrayOutputStream 的
只需要记住CharArrayReader 接受一个CharArray 从这里面读,,read操纵的都是这个字符数组
CharArrayWriter内部有一个CharArray  数据是写入到他们里面的即可,write操纵的是内部的字符数组

转载于:https://www.cnblogs.com/noteless/p/9639974.html

你可能感兴趣的文章
【Windows编程】系列第六篇:创建Toolbar与Statusbar
查看>>
Linux篇 | 磁盘存储和文件系统
查看>>
大众点评运维架构图文详解
查看>>
玩转iOS转场动画
查看>>
机房(厂房)温度环境监控系统
查看>>
spark-shell开发wordcount程序
查看>>
DNS正反解析
查看>>
数据库与监控安全
查看>>
算法研发---对宏定义#define相关研究
查看>>
Linux下搭建FTP服务器
查看>>
浅析Mysql的隔离级别及MVCC
查看>>
1.3 Shell脚本编程基础之条件测试
查看>>
JAVA程序员代表大众车,C++程序员代表捷豹,看看各类程序员们代表着什么车
查看>>
centOS7下安装GUI图形界面
查看>>
postgresql 中int4rang类型项目应用
查看>>
postfix疯狂外发垃圾邮件之分析与解决
查看>>
test和read命令
查看>>
ubuntu无法激活输入法,Zendstudio无法激活中文输入法问题
查看>>
《使命召唤7:黑色行动》有什么简单办法进入僵尸模式
查看>>
ChannelOption.TCP_NODELAY, true->浅谈tcp_nodelay的作用
查看>>