模块 java.base
 java.io

类 PipedInputStream

java.lang.Object
java.io.InputStream
java.io.PipedInputStream
所有已实现的接口:
Closeable , AutoCloseable

public class PipedInputStream extends InputStream
管道输入流应该连接到管道输出流;管道输入流然后提供写入管道输出流的任何数据字节。通常,数据由一个线程从PipedInputStream 对象读取,数据由其他线程写入相应的PipedOutputStream。不建议尝试从单个线程中使用这两个对象,因为它可能会使线程死锁。管道输入流包含一个缓冲区,在限制范围内将读取操作与写入操作分离。如果向连接的管道输出流提供数据字节的线程不再存在,则称管道为 破碎的
自从:
1.0
参见:
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    protected byte[]
    放置传入数据的循环缓冲区。
    protected int
    从连接的管道输出流接收到的下一个数据字节将存储在循环缓冲区中的位置索引。
    protected int
    此管道输入流将读取下一个数据字节的循环缓冲区中位置的索引。
    protected static final int
    管道的循环输入缓冲区的默认大小。
  • 构造方法总结

    构造方法
    构造方法
    描述
    创建一个 PipedInputStream 所以它还不是 connected
    PipedInputStream(int pipeSize)
    创建一个 PipedInputStream 以便它还不是 connected 并使用指定的管道大小作为管道缓冲区。
    创建一个 PipedInputStream 以便它连接到管道输出流 src
    PipedInputStream(PipedOutputStream src, int pipeSize)
    创建一个 PipedInputStream 以便它连接到管道输出流 src 并使用指定的管道大小作为管道缓冲区。
  • 方法总结

    修饰符和类型
    方法
    描述
    int
    返回可以从该输入流中无阻塞地读取的字节数。
    void
    关闭此输入流并释放与该流关联的所有系统资源。
    void
    导致此管道输入流连接到管道输出流 src
    int
    read()
    从此管道输入流中读取下一个数据字节。
    int
    read(byte[] b, int off, int len)
    从此管道输入流中读取最多 len 字节的数据到字节数组中。
    protected void
    receive(int b)
    接收一个字节的数据。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细信息

    • PIPE_SIZE

      protected static final int PIPE_SIZE
      管道的循环输入缓冲区的默认大小。
      自从:
      1.1
      参见:
    • buffer

      protected byte[] buffer
      放置传入数据的循环缓冲区。
      自从:
      1.1
    • in

      protected int in
      从连接的管道输出流接收到的下一个数据字节将存储在循环缓冲区中的位置索引。 in < 0 表示缓冲区为空,in == out 表示缓冲区已满
      自从:
      1.1
    • out

      protected int out
      此管道输入流将读取下一个数据字节的循环缓冲区中位置的索引。
      自从:
      1.1
  • 构造方法详细信息

    • PipedInputStream

      public PipedInputStream(PipedOutputStream  src) throws IOException
      创建一个 PipedInputStream 以便它连接到管道输出流 src。写入 src 的数据字节将可用作此流的输入。
      参数:
      src - 要连接的流。
      抛出:
      IOException - 如果发生 I/O 错误。
    • PipedInputStream

      public PipedInputStream(PipedOutputStream  src, int pipeSize) throws IOException
      创建一个 PipedInputStream 以便它连接到管道输出流 src 并使用指定的管道大小作为管道缓冲区。写入 src 的数据字节将可用作此流的输入。
      参数:
      src - 要连接的流。
      pipeSize - 管道缓冲区的大小。
      抛出:
      IOException - 如果发生 I/O 错误。
      IllegalArgumentException - 如果是 pipeSize <= 0
      自从:
      1.6
    • PipedInputStream

      public PipedInputStream()
      创建一个 PipedInputStream 所以它还不是 connected 。它必须是 connectedPipedOutputStream 才能使用。
    • PipedInputStream

      public PipedInputStream(int pipeSize)
      创建一个 PipedInputStream 以便它还不是 connected 并使用指定的管道大小作为管道缓冲区。它必须是 connectedPipedOutputStream 才能使用。
      参数:
      pipeSize - 管道缓冲区的大小。
      抛出:
      IllegalArgumentException - 如果是 pipeSize <= 0
      自从:
      1.6
  • 方法详情

    • connect

      public void connect(PipedOutputStream  src) throws IOException
      导致此管道输入流连接到管道输出流 src 。如果此对象已经连接到其他管道输出流,则会抛出 IOException

      如果 src 是一个未连接的管道输出流并且 snk 是一个未连接的管道输入流,它们可以通过调用连接:

      snk.connect(src) 

      或电话:

      src.connect(snk) 

      这两个调用具有相同的效果。

      参数:
      src - 要连接的管道输出流。
      抛出:
      IOException - 如果发生 I/O 错误。
    • receive

      protected void receive(int b) throws IOException
      接收一个字节的数据。如果没有输入可用,此方法将阻塞。
      参数:
      b - 接收到的字节
      抛出:
      IOException - 如果管道为 broken unconnected 、已关闭,或者发生 I/O 错误。
      自从:
      1.1
    • read

      public int read() throws IOException
      从此管道输入流中读取下一个数据字节。值字节作为 int0255 范围内返回。此方法会阻塞,直到输入数据可用、检测到流结束或抛出异常为止。
      指定者:
      read 在类 InputStream
      返回:
      下一个数据字节,如果到达流的末尾则为 -1
      抛出:
      IOException - 如果管道为 unconnected broken 、已关闭,或者发生 I/O 错误。
    • read

      public int read(byte[] b, int off, int len) throws IOException
      从此管道输入流中读取最多 len 字节的数据到字节数组中。如果到达数据流的末尾或者len 超过管道的缓冲区大小,则将读取少于 len 字节。如果 len 为零,则不读取任何字节并返回 0;否则,该方法将阻塞,直到至少有 1 个字节的输入可用、检测到流的结尾或抛出异常。
      重写:
      read 在类 InputStream
      参数:
      b - 读取数据的缓冲区。
      off - 写入数据的数组 b 中的起始偏移量。
      len - 要读取的最大字节数。
      返回:
      读入缓冲区的字节总数,如果因为已到达流的末尾而没有更多数据,则为 -1
      抛出:
      NullPointerException - 如果 bnull
      IndexOutOfBoundsException - 如果 off 为负,len 为负,或者 len 大于 b.length - off
      IOException - 如果管道为 broken unconnected 、已关闭,或者发生 I/O 错误。
      参见:
    • available

      public int available() throws IOException
      返回可以从该输入流中无阻塞地读取的字节数。
      重写:
      available 在类 InputStream
      返回:
      可以从该输入流中无阻塞读取的字节数,或者 0 如果该输入流已通过调用它的 close() 方法关闭,或者如果管道是 unconnected broken
      抛出:
      IOException - 如果发生 I/O 错误。
      自从:
      1.0.2
    • close

      public void close() throws IOException
      关闭此输入流并释放与该流关联的所有系统资源。
      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      重写:
      close 在类 InputStream
      抛出:
      IOException - 如果发生 I/O 错误。