当前位置: 首页 > 教程 > Java IO流 >

Java PipedReader

精华
小牛编辑
98浏览
2023-03-14

1 什么是Java PipedReader

PipedReader类用于以字符流的形式读取管道的内容。这个类一般是用来阅读的文本。

PipedReader类必须连接到相同的PipedWriter,并且由不同的线程使用。

2 Java PipedReader的构造方法

构造方法 描述
PipedReader(int pipeSize) 创建一个PipedReader,以便尚未连接,并使用指定的管道大小作为管道的缓冲区。
PipedReader(PipedWriter src) 创建一个PipedReader,以便将其连接到管道写入器src。
PipedReader(PipedWriter src, int pipeSize) 创建一个PipedReader,以便将其连接到管道编写器src,并将指定的管道大小用于管道的缓冲区。
PipedReader() 创建一个PipedReader,以便尚未连接。

3 Java PipedReader的方法

修饰符 方法 描述
void close() 关闭此PipedReader并释放与该流关联的所有系统资源。
void connect(PipedWriter src) 将使此管道读取器连接到PipedWriter。
int read() 从此PipedReader中读取数据的下一个字符。
int read(char[] cbuf, int off, int len) 从此PipedReader中读取最多len个数据字符到一个字符数组中。
boolean ready() 告诉此流是否已准备好被读取。

4 Java PipedReader的例子

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */
/**
 *  Java PipedReader的例子
 */
import java.io.PipedReader;
import java.io.PipedWriter;

public class Demo {

    public static void main(String[] args) {
        try {

            final PipedReader read = new PipedReader();
            final PipedWriter write = new PipedWriter(read);

            Thread readerThread = new Thread(new Runnable() {
                public void run() {
                    try {
                        int data = read.read();
                        while (data != -1) {
                            System.out.print((char) data);
                            data = read.read();
                        }
                    } catch (Exception ex) {
                    }
                }
            });

            Thread writerThread = new Thread(new Runnable() {
                public void run() {
                    try {
                        write.write("I love my country\n".toCharArray());
                    } catch (Exception ex) {
                    }
                }
            });

            readerThread.start();
            writerThread.start();

        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }

    }
}

输出结果为:

I love my country