Java IO(十四) CharArrayReader 和 CharArrayWriter

时间:2023-01-12 11:38:21

Java IO(十四) CharArrayReader 和 CharArrayWriter

一、介绍

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

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

二、构造方法

(一)、CharArrayReader

Java IO(十四) CharArrayReader 和 CharArrayWriter

(二)、CharArrayWriter

Java IO(十四) CharArrayReader 和 CharArrayWriter

三、常用API

(一)、CharArrayReader

Java IO(十四) CharArrayReader 和 CharArrayWriter

(二)、CharArrayWriter

Java IO(十四) 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&lpar;十二&rpar;CharArrayReader和CharArrayWriter

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

  2. 系统学习 Java IO &lpar;十四&rpar;----字符读写缓存和回退 BufferedReader&sol;BufferedWriter &amp&semi; PushbackReader

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

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

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

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

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

  5. &OpenCurlyDoubleQuote;全栈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 &lpar;十六&rpar;----这么多类,应该用哪个&quest;

    目录:系统学习 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. 使用Cocos2d-x实现微信&OpenCurlyDoubleQuote;天天爱消除”炫耀button特效

    引言Cocos2d-x引擎中有很多Action,这样可以方便的让开发者调用相应的Action去完成一些动作,例如:移动,弹跳,淡入淡出等.可在实际的开发过程中,由于游戏的需要,显然地,引擎自带的Act ...

  2. 3d效果的图片轮播

    CSS3的3d变换 CSS3给我们提供了一个新的功能,那就是3d变换.3d变换和2d变换的基本API函数类似,只不过多了些在Z轴上的操作,不难使用. 但是,为了让元素拥有3d变换的功能,我们需要给他的 ...

  3. css3动画效果

    css3中的transform中有旋转,放缩,倾斜,平移的功能,分别对应的属性是:rotate,scale,skew,translate 旋转:(rotate) [css] view plaincop ...

  4. RPM方式编译升级centos内核

    [root@iZ2893wjzgyZ ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org [root@iZ2893wjzgyZ ...

  5. angular&plus;ckeditor最后上传的最后一张图片不会被添加(bug)

    做法一: angularJs+ckeditor 一.页面 <textarea ckeditor required name="topicContent" ng-model=& ...

  6. bug 修改心得

    我在做一个项目的时候,分页无法显示,于是我就开始进行各种修改. 最后我发现竟然是因为配置文件写错了,结果页面跳到别的页面, 跳转到了单项详细页面.

  7. Java综合题目

    分支, 循环, 数据类型 1, 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 2, 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13... ...

  8. 从实战出发,谈谈 nginx 信号集

    前言 之前工作时候,一台引流测试机器的一个 ngx_lua 服务突然出现了一些 HTTP/500 响应,从错误日志打印的堆栈来看,是不久前新发布的版本里添加的一个 Lua table 不存在,而有代码 ...

  9. Javascript深入之创建对象的多种方式以及优缺点

    1.工厂模式 function createPerson(name) { var o = new Object(); o.name = name; o.getName = function() { c ...

  10. Struts学习总结-02 上传文件

    Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传.上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的目录,以确保数据不丢失. ...