程序员大航子 2019-02-05 20:41 采纳率: 0%
浏览 539

管道流, 我定义了一个字符数组, 为什么还是一个字符一个字符读取?

// 字符输入流
class CharThreadReader extends Thread {

private PipedReader pipedReader;

public CharThreadReader(PipedReader pipedReader) {
    this.pipedReader = pipedReader;
}

@Override
public void run() {
    try {
        char[] c = new char[] { 1024 * 3 };
        int readLength = pipedReader.read(c);

        while (readLength != -1) {
            System.out.print(new String(c, 0, readLength));
            readLength = pipedReader.read(c);
        }
        pipedReader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-02-05 20:47
    关注

    根据文档

    java.io.PipedReader.read() 方法从这个管道流中读取数据的下一个字符。如果没有字符可用,或流已到达末尾,则返回值-1。此方法一直阻塞在输入数据可用,该流的末尾被检测到,或者抛出一个异常。

    读取多个字符的重载形式是
    int java.io.PipedReader.read(char cbuf[], int off, int len)
    分别是缓冲数组,偏移量,读取的长度。

    评论

报告相同问题?