模块  java.base
软件包  java.io

Class PipedInputStream

  • 实现的所有接口
    CloseableAutoCloseable

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

      • 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
        从此管道输入流中读取下一个数据字节。 值字节作为int返回,范围为0255 此方法将阻塞,直到输入数据可用,检测到流的末尾或抛出异常。
        Specified by:
        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个字节可用,已检测到流的末尾,或者抛出异常。
        重写:
        readInputStream
        参数
        b - 读取数据的缓冲区。
        off - 目标阵列 b的起始偏移量
        len - 读取的最大字节数。
        结果
        读入缓冲区的总字节数,如果由于已到达流末尾而没有更多数据, -1
        异常
        NullPointerException - 如果 bnull
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或者 len为大于 b.length - off
        IOException - 如果管道为 broken,unconnected关闭,或者是否发生I / O错误。
        另请参见:
        InputStream.read()
      • available

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