正如在上面的示例中所看到的,PipedReader 需要连接到 PipedWriter 。 当这两个字符流连接时,它们形成一个管道。 要了解有关 Java IO 管道的更多信息,请参考 管道流 PipedInputStream 部分。
读写字符数组 CharArrayReader/CharArrayWriterByteArrayInputStream/ByteArrayOutputStream 是对字节数组处理,CharArrayReader/CharArrayWriter 则是对字符数组进行处理,其用法是基本一致的,所以这里略微带过。
CharArrayReaderCharArrayReader 类可以将 char 数组的内容作为字符流读取。
只需将 char 数组包装在 CharArrayReader 中就可以很方便的生成一个 Reader 对象。
CharArrayWriter 类可以通过 Writer 方法(CharArrayWriter是Writer的子类)编写字符,并将写入的字符转换为 char 数组。
在写入所有字符时,CharArrayWriter 上调用 toCharArray() 能很方便的生成一个字符数组。
CharArrayReader(char[] buf) 根据指定的 char 数组创建一个 CharArrayReader
CharArrayReader(char[] buf, int offset, int length) 根据指定的 char 数组创建一个 CharArrayReader
CharArrayWriter() 创建一个新的 CharArrayWriter ,默认缓冲区大小为 32
CharArrayWriter(int initialSize) 创建一个具有指定初始缓冲区大小的新 CharArrayWriter
注意:设置初始大小不会阻止 CharArrayWriter 存储比初始大小更多的字符。 如果写入的字符数超过了初始 char 数组的大小,则会创建一个新的更大的 char 数组,并将所有字符复制到新数组中。
一个使用实例如下:
CharArrayWriter writer = new CharArrayWriter(); writer.append('H'); writer.write("ello ".toCharArray()); writer.write("World"); char[] chars = writer.toCharArray(); writer.close(); CharArrayReader reader = new CharArrayReader(chars); int data = reader.read(); while (data != -1) { System.out.print((char) data); // Hello World data = reader.read(); } reader.close();注意:为清楚起见,此处已跳过正确的异常处理。 要了解有关正确异常处理的更多信息,请转至 Java IO 异常处理。