功能简介

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操纵的是内部的字符数组



[十七]JavaIO之CharArrayReader 和 CharArrayWriter的更多相关文章

  1. Java IO(十四) CharArrayReader 和 CharArrayWriter

    Java IO(十四) CharArrayReader 和 CharArrayWriter 一.介绍 CharArrayReader 和 CharArrayWriter 是字符数组输入流和字符数组输出 ...

  2. Java之IO(十二)CharArrayReader和CharArrayWriter

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7082668.html 1.前言 本章介绍字符数组流,作用和ByteArrayInputStream字节数组流相同 ...

  3. Java-IO之CharArrayReader

    CharArrayReader是字符数组输入流,CharArrayReader用于读取字符数组,继承于Reader操作的数据是以字符为单位. (1)CharArrayReader实际上是通过字符数组去 ...

  4. javaIO——CharArrayReader & CharArrayWriter

    上一篇学习了StringReader和StringWriter,CharArrayReader和CharArrayWriter的实现跟他们很像,拥有的方法也基本一样.区别只是,后者两个的数据操作目标是 ...

  5. Java---IO加强(2)

    转换流 ★转换流功能1:充当字节流与字符流之间的桥梁 需求:模拟英文聊天程序,要求: (1) 从键盘录入英文字符,每录一行就把它转成大写输出到控制台: (2) 保存聊天记录到字节流文件. 要求1的设计 ...

  6. [二十]JavaIO之StringReader 与 StringWriter

    功能简介 还记得前面说过的CharArrayReader 和 CharArrayWriter吗? CharArray 是数据源 CharArrayReader 是读,  从一个CharArray 中读 ...

  7. javaIO 流分析总结

    Java中的流,可以从不同的角度进行分类. 按照数据流的方向不同可以分为:输入流和输出流. 按照处理数据单位不同可以分为:字节流和字符流. 按照实现功能不同可以分为:节点流和处理流. 输出流: 输入流 ...

  8. Java输入、输入、IO流 类层次关系梳理

    本文主要关注在Java编程中涉及到的IO相关的类库.方法.以及对各个层次(抽线.接口继承)的流之间的关系进行梳理 相关学习资料 http://baike.baidu.com/view/1007958. ...

  9. Java:输入输出流 java.io包的层次结构

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

随机推荐

  1. CGI、FastCGI、PHP-FPM联系与区别(理解总结自其他博文)

    参考:http://blog.csdn.net/tyrantbear/article/details/52077321 参考:http://mp.weixin.qq.com/s?src=11& ...

  2. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习5

    #include <iostream> using namespace std; const double N1=35000; const int N2=15000; const int ...

  3. Vue(三十三)国际化解决方案

    摘自:https://blog.csdn.net/qq_41485414/article/details/81093999 (1)第一种方式:中英文两套页面 优点:技术含量最低 缺点:占内存,响应慢, ...

  4. typescript 安装

    1,全局安装 cnpm install typescript -g (tsc -v) 2,初始化 tsc --init 3,自动编译(hbuilder) 工具-插件安装-浏览eclipse插件市场-搜 ...

  5. web项目如何使用Material Icons

    使用文档链接 图标库 最简单的使用方法 引入 <link href="https://fonts.googleapis.com/icon?family=Material+Icons&q ...

  6. RTN 实操

    创建房间 test-rtn 10001 e2uii6r7r 8LfwOcreM76OiV1V1y8jXrMG_BNa-cmktpWUznRa:kdYdsEpcYLc5ceWEHPaK0ZDI7Qc=: ...

  7. java从pdf中提取文本

    一(单文件转换):下载pdfbox包,百度搜pdfbox.(fontbox-1.8.16.jar和pdfbox-app-1.8.16.jar) package pdf; import java.io. ...

  8. python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag

    一.Tags(一)for 1.基本用法 <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% e ...

  9. gradle环境变量设置_配置注意事项

    看<Spring源码深度解析>的时候,在windows7系统中按照书里配置gradle环境变量,配置完后输入gradle -v,一直显示:'gradle'不是内部或外部命令,也不是可执行的 ...

  10. C语言面试题分类->链表

    链表的创建,清空,插入,删除 typedef int (* __compfunc)(const void *, const void *); //Traverse list. Fast macro t ...