Java IO(十四) CharArrayReader 和 CharArrayWriter

一、介绍

CharArrayReader 和 CharArrayWriter 是字符数组输入流和字符数组输出流,它们同 ByteArrayIuputStream 和 ByteArrayOutputStream 类似,只不过一个是字节流,一个是字符流。CharArrayReader 和 CharArrayWriter 内部维护了一个字符数组,用来缓存数据。

  • CharArrayReader:字符数组输入流,继承于 Reader,用于读取字符数组,操作的数据是以字符为单位。
  • CharArrayWriter :字符数组输出流,继承于 Writer,用于写入字符数组,操作的数据是以字符为单位。

二、构造方法

(一)、CharArrayReader

(二)、CharArrayWriter

三、常用API

(一)、CharArrayReader

(二)、CharArrayWriter

四、实例

public class CharArrayDemo {
private static char[] chs = new char[]
{'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z'}; public static void main(String[] args) {
write();
read();
} /**
* CharArrayWriter 测试
*/
public static void write() {
CharArrayWriter out = null;
try {
out = new CharArrayWriter();
out.write(chs);// 写入字符数组
out.write('A');// 写入字符 A
out.write(chs, 10, 10);// 从索引10开始,写入10个字符
out.write("ABCDEFGHIJKLMN", 5, 5);// 写入字符串的一部分
/*
* ① 写入0
* ② 接着写入 123456789
* ③ 写入字符串的一部分
*/
out.append('0').append("123456789").append(String.valueOf(chs), 5, 10);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(out != null)
out.close();
}catch(Exception e) {
e.printStackTrace();
}
}
} /**
* CharArrayReader 测试
*/
public static void read() { CharArrayReader in = null;
char[] buf = new char[10];
int len = 0;
try {
in = new CharArrayReader(chs);
for(int i = 0;i < 3;i++) {
if(in.ready())
System.out.println("read() : " + (char)in.read());// 读取一个字符输出
}
if (!in.markSupported()) {
System.out.println("mark not supported");
return;
}
len = in.read(buf);// 读取并缓存到字符数组
System.out.println("read(buf) : " + new String(buf,0,len));
in.mark(0);// 标记0位置
in.skip(5);// 跳过5个字符
len = in.read(buf, 0, 10);// 读取字符数组一部分
System.out.println("read(buf, 0, 10) : " + new String(buf,0,len));
in.reset();// 重置
len = in.read(buf, 0, 10);// 读取字符数组一部分
System.out.println("read(buf, 0, 10) : " + new String(buf,0,len));
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(in != null)
in.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}

Java IO(十四) CharArrayReader 和 CharArrayWriter的更多相关文章

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

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

  2. 系统学习 Java IO (十四)----字符读写缓存和回退 BufferedReader/BufferedWriter & PushbackReader

    目录:系统学习 Java IO---- 目录,概览 BufferedReader BufferedReader 类构造器接收一个 Reader 对象,为 Reader 实例提供缓冲. 缓冲可以加快 I ...

  3. “全栈2019”Java第九十四章:局部内部类详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. “全栈2019”Java第十四章:二进制、八进制、十六进制

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第二十四章:流程控制语句中决策语句switch下篇

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. Java IO(四) InputStream 和 OutputStream

    Java IO(四) InputStream 和 OutputStream 一.介绍 InputStream 和 OutputStream 是字节流的超类(父类),都是抽象类,都是通过实例化它们的子类 ...

  7. 系统学习 Java IO (十六)----这么多类,应该用哪个?

    目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputStream,OutputStream,Reader 和 Writer 类的许多子类. 原 ...

  8. Java IO(四)——字符流

    一.字符流 字节流提供了处理任何类型输入/输出操作的功能(因为对于计算机而言,一切都是0和1,只需把数据以字节形式表示就够了),但它们不可以直接操作Unicode字符,因为一个Unicode字符占用2 ...

  9. JAVA提高十四:HashSet深入分析

    前面我们介绍了HashMap,Hashtable,那么还有一个hash家族,那就是HashSet;在讲解HashSet前,大家先要知道的是HashSet是单值集合的接口,即是Collection下面的 ...

  10. Java IO(四)

    在文件操作流中,输入输出的目标都是文件,但是有时候,我们并不需要写入文件,只是需要中转一下而已,这样就会显得很麻烦,所以我们就可以使用内存操作流.在内存操作流中,输入输出目标都是内存. 内存输出流:B ...

随机推荐

  1. python-os.rmdir与shutil.rmtree的区别和用法

    每次写脚本的时候,pycharm都会自动生成缓存文件__pycache__文件,在提交代码的时候还得挨个删除,于是自己写一小段代码自动循环删除此目录及下面的文件. 思路: 先将目录及其下的文件读取出来 ...

  2. 分治思想--快速排序解决TopK问题

    ----前言 ​ 最近一直研究算法,上个星期刷leetcode遇到从两个数组中找TopK问题,因此写下此篇,在一个数组中如何利用快速排序解决TopK问题. 先理清一个逻辑解决TopK问题→快速排序→递 ...

  3. 前端之HTML1

    直接上代码: <!DOCTYPE html> <html> <body bgcolor="green"> <h1 align=" ...

  4. 1-MyBatisPlus教程(一)

    1,简介 官网:http://mp.baomidou.com/ 参考教程:http://mp.baomidou.com/guide/ MyBatis-Plus(简称 MP)是一个 MyBatis 的增 ...

  5. JUC之CAS

    CAS(全称为CompareAndSwap,也有说是CompareAndSet,都差不多)是一条CPU并发原语,它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,判断预期值和更改新值的 ...

  6. Hexo+GitHub Actions 完美打造个人博客

    Hexo简介 Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub和Coding上,是搭建博客的首选框架.大家可以进入hexo官网进行详细查看, ...

  7. Android 8.1 关机充电动画(二)Uboot模式

    system:Android 8.1 platform:RK3326/PX30 uboot kernel Android 8.1 关机充电动画(一)模式选择 Android 8.1 关机充电动画(二) ...

  8. ASP.NET Core中结合枚举和资源文件显示列表

    模型类的某些属性以枚举形式出现,我们希望在打开编辑表单时在选择列表中显示枚举值.有时我们想要枚举元素名称,但有时我们想要使用自定义名称甚至翻译. 这个例子演示了如何获取枚举元素名称以选择ASP.NET ...

  9. 设计模式之GOF23建造者模式

    组件很多,装配顺序不定 本质: 1,分离了对象子组件的单独构造(Builder负责)和装配(Director负责),从而可以构造出复杂的对象,这个模式适用于某个对象的构建过程复杂的情况下使用 2,实现 ...

  10. navicat 远程链接Mysql问题

    mysql服务器需要配置 给远程访问配置权限:注意自己的用户名和密码 使用select host, user, password from mysql.user;查看是否配置好相应的用户和密码 nav ...