Module  java.base
软件包  java.io

Class PipedInputStream

  • All Implemented Interfaces:
    CloseableAutoCloseable


    public class PipedInputStream
    extends InputStream
    管道输入流应连接到管道输出流; 管道输入流然后提供写入管道输出流的任何数据字节。 通常,一个线程从PipedInputStream对象读取数据,并且其他线程将数据写入相应的PipedOutputStream 不建议尝试从单个线程使用这两个对象,因为它可能会使线程死锁。 管道输入流包含一个缓冲区,在读取操作中将读取操作与限制内的操作相分离。 如果向连接的管道输出流提供数据字节的线程不再存在, 则称管道为broken
    从以下版本开始:
    1.0
    另请参见:
    PipedOutputStream
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      protected byte[] buffer
      传入数据的循环缓冲区。
      protected int in
      在从连接的管道输出流接收到的数据的下一个字节将被存储的循环缓冲区中的位置的索引。
      protected int out
      循环缓冲区中的位置的索引,在该缓冲区中下一个字节的数据将被该管道输入流读取。
      protected static int PIPE_SIZE
      管道循环输入缓冲区的默认大小。
    • 字段详细信息

      • PIPE_SIZE

        protected static final int PIPE_SIZE
        管道循环输入缓冲区的默认大小。
        从以下版本开始:
        1.1
        另请参见:
        Constant Field Values
      • 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 使用前必须先connected才能使用PipedOutputStream
      • 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 -如果管道是 brokenunconnected ,关闭,或者如果发生I / O错误。
        从以下版本开始:
        1.1
      • read

        public int read​()
                 throws IOException
        从这个管道输入流读取数据的下一个字节。 值字节作为int返回到0255 该方法阻塞直到输入数据可用,检测到流的结尾,或抛出异常。
        Specified by:
        readInputStream
        结果
        数据的下一个字节,如果达到流的末尾, -1
        异常
        IOException -如果管道是 unconnectedbroken ,关闭,或者如果发生I / O错误。
      • read

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

        public int available​()
                      throws IOException
        返回可以从该输入流读取而不阻塞的字节数。
        重写:
        available在类 InputStream
        结果
        可以从该输入流无阻塞读取,或字节数 0该输入流是否已调用它的关闭 close()方法,或者如果管道是 unconnected ,或 broken
        异常
        IOException - 如果发生I / O错误。
        从以下版本开始:
        1.0.2