📜  Java.io.PipedReader Java中的类(1)

📅  最后修改于: 2023-12-03 15:01:35.019000             🧑  作者: Mango

Java.io.PipedReader Java中的类介绍

Java.io.PipedReader是Java中输入流的一个类,它用于将字符数据从管道输出流读入。

PipedReader类的构造函数

PipedReader类的构造函数可用于创建一个新的PipedReader对象,其语法如下:

public PipedReader(PipedWriter out) throws IOException

该构造函数将管道输出流作为参数,并实例化PipedReader对象,以便从输出流读取字符。

PipedReader类的常用方法

以下是PipedReader类的一些常用方法:

  • read():从流中读取单个字符。该方法将阻塞直到有数据可以读取。

  • read(char[] cbuf, int offset, int length):从流中读取最多length个字符,并将它们存储在数组cbuf的offset处开始。

  • ready():检查此流是否已准备好被读取。

  • close():关闭该流并释放与之关联的所有系统资源。

PipedReader类的示例代码

以下是使用PipedReader和PipedWriter将数据从一个线程传递到另一个线程的示例代码:

import java.io.IOException;
import java.io.PipedReader;
import java.io.PipedWriter;

public class PipeExample {
   public static void main(String[] args) {
      try {
         final PipedReader reader = new PipedReader();
         final PipedWriter writer = new PipedWriter();
         writer.connect(reader);

         Thread writerThread = new Thread(new Runnable() {
            @Override
            public void run() {
               try {
                  writer.write("Hello, world!");
                  writer.close();
               } catch (IOException ex) {
                  ex.printStackTrace();
               }
            }
         });

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

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

      } catch (IOException ex) {
         ex.printStackTrace();
      }
   }
}

运行此代码后,将输出字符串“Hello, world!”。

总结

Java.io.PipedReader类是一个有用的字符输入流类,用于从管道输出流中读取字符数据。它具有很多实用方法,使得从流中读取数据变得比较容易。在多线程编程中,PipedReader和PipedWriter可以方便地实现数据的共享和传递。