Java IO(十四) CharArrayReader 和 CharArrayWriter
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(); } } } }