系统学习 Java IO (十三)----字符读写 Reader/Writer 及其常用子类 (3)

正如在上面的示例中所看到的,PipedReader 需要连接到 PipedWriter 。 当这两个字符流连接时,它们形成一个管道。 要了解有关 Java IO 管道的更多信息,请参考 管道流 PipedInputStream 部分。

读写字符数组 CharArrayReader/CharArrayWriter

ByteArrayInputStream/ByteArrayOutputStream 是对字节数组处理,CharArrayReader/CharArrayWriter 则是对字符数组进行处理,其用法是基本一致的,所以这里略微带过。

CharArrayReader

CharArrayReader 类可以将 char 数组的内容作为字符流读取。
只需将 char 数组包装在 CharArrayReader 中就可以很方便的生成一个 Reader 对象。

CharArrayWriter

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 异常处理。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyxsy.html