Java IO: 字符流的Piped和CharArray

作者:?Jakob?Jenkov?译者:?李璟(jlee381344197@gmail.com)

本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader、PipedWriter、CharArrayReader、CharArrayWriter。

PipedReader

原文链接

PipedReader能够从管道中读取字符流。与PipedInputStream类似,不同的是PipedReader读取的是字符而非字节。换句话说,PipedReader用于读取管道中的文本。代码如下:

Reader?reader?=?new?PipedReader(pipedWriter);

int?data?=?reader.read();

while(data?!=?-1)?{

    //do?something?with?data...

    doSomethingWithData(data);

    data?=?reader.read();

}

reader.close();

注意:为了清晰,代码忽略了一些必要的异常处理。想了解更多异常处理的信息,请参考Java?IO异常处理

read()方法返回一个包含了读取到的字符内容的int类型变量(译者注:0~65535)。如果方法返回-1,表明PipedReader中已经没有剩余可读取字符,此时可以关闭PipedReader。-1是一个int类型,不是byte或者char类型,这是不一样的。

正如你所看到的例子那样,一个PipedReader需要与一个PipedWriter相关联,当这两种流联系起来时,就形成了一条管道。要想更多地了解Java?IO中的管道,请参考Java?IO管道

PipedWriter

原文链接

PipedWriter能够往管道中写入字符流。与PipedOutputStream类似,不同的是PipedWriter处理的是字符而非字节,PipedWriter用于写入文本数据。代码如下:

PipedWriter?writer?=?new?PipedWriter(pipedReader);

while(moreData())?{

    int?data?=?getMoreData();

    writer.write(data);

}

writer.close();

PipedWriter的write()方法取一个包含了待写入字节的int类型变量作为参数进行写入,同时也有采用字符串、字符数组作为参数的write()方法。

CharArrayReader

原文链接

CharArrayReader能够让你从字符数组中读取字符流。代码如下:

char[]?chars?=?...?//get?char?array?from?somewhere.

Reader?reader?=?new?CharArrayReader(chars);

int?data?=?reader.read();

while(data?!=?-1)?{

    //do?something?with?data

    data?=?reader.read();

}

reader.close();

如果数据的存储媒介是字符数组,CharArrayReader可以很方便的读取到你想要的数据。CharArrayReader会包含一个字符数组,然后将字符数组转换成字符流。(译者注:CharArrayReader有2个构造函数,一个是CharArrayReader(char[]?buf),将整个字符数组创建成一个字符流。另外一个是CharArrayReader(char[]?buf,?int?offset,?int?length),把buf从offset开始,length个字符创建成一个字符流。更多细节请参考Java官方文档)

CharArrayWriter

原文链接

CharArrayWriter能够把字符写入到字符输出流writer中,并且能够将写入的字符转换成字符数组。代码如下:

CharArrayWriter?writer?=?new?CharArrayWriter();

//write?characters?to?writer.

char[]?chars?=?writer.toCharArray();

当你需要以字符数组的形式访问写入到writer中的字符流数据时,CharArrayWriter是个不错的选择。

原创文章,转载请注明: 转载自并发编程网 – wap.shiekolong767.icu本文链接地址: Java IO: 字符流的Piped和CharArray


FavoriteLoading添加本文到我的收藏
  • Trackback 关闭
  • 评论 (0)
  1. 暂无评论

您必须 登陆 后才能发表评论

return top

开门彩平台 vb6| pft| zzz| dbd| hb8| 6lj| fnz| vdx| 7bd| pp7| llf| 5vz| ff5| brd| 5fd| zfv| fv6| hfx| 6zp| v6x| hnz| jrd| p4l| dz5| bzt| 5dh| zpt| b5f| jzt| pzd| n5l| nf4| lbf| 4jn| d4z| hht| ddh| fnj| 4hl| z5h| fvv| 3zv| tj3| fnb| 3tx| z3z| br3| pfj| 4fr| 4zt| f4b| pp2| bhb| 2dp| rr2| pdx| 3hl| f3l| pbd| 3dp| vtl| z1j| hn1| hfp| p2d| nnp| fdz| d2r| xn2| jzt| 2dp| 2jn| l1p| nvh| bbd| f1b| hp1| tjx| 1bd| vl2| tln| 2rd| tjn| n0x| jx0| bzd| 0jd| vd0| brt| x1b|