zoukankan      html  css  js  c++  java
  • Java IO: 字符流的Piped和CharArray

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

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

    PipedReader

    原文链接

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

    01 Reader reader = new PipedReader(pipedWriter);
    02  
    03 int data = reader.read();
    04  
    05 while(data != -1) {
    06  
    07     //do something with data...
    08  
    09     doSomethingWithData(data);
    10  
    11     data = reader.read();
    12  
    13 }
    14  
    15 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用于写入文本数据。代码如下:

    01 PipedWriter writer = new PipedWriter(pipedReader);
    02  
    03 while(moreData()) {
    04  
    05     int data = getMoreData();
    06  
    07     writer.write(data);
    08  
    09 }
    10  
    11 writer.close();

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

    CharArrayReader

    原文链接

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

    01 char[] chars = ... //get char array from somewhere.
    02  
    03 Reader reader = new CharArrayReader(chars);
    04  
    05 int data = reader.read();
    06  
    07 while(data != -1) {
    08  
    09     //do something with data
    10  
    11     data = reader.read();
    12  
    13 }
    14  
    15 reader.close();

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

    CharArrayWriter

    原文链接

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

    1 CharArrayWriter writer = new CharArrayWriter();
    2  
    3 //write characters to writer.
    4  
    5 char[] chars = writer.toCharArray();

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

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

  • 相关阅读:
    练习:给Keras ResNet50源码加上正则化参数, 修改激活函数为Elu
    凸集,凸函数,凸优化问题。
    Keras用动态数据生成器(DataGenerator)和fitgenerator动态训练模型
    Lagrangian 对偶 和 Slater 条件
    凸集分离定理
    Python 中的 sorted 和 sort的区别
    工作反思
    jemalloc
    libcoap
    dropbear
  • 原文地址:https://www.cnblogs.com/dassmeta/p/5323950.html
Copyright © 2011-2022 走看看