java.lang.Object
java.io.InputStream
java.io.PipedInputStream
- 所有已实现的接口:
-
Closeable
,AutoCloseable
管道输入流应连接到管道输出流;然后管道输入流提供写入管道输出流的任何数据字节。通常,数据从一个线程通过
PipedInputStream
对象读取,数据由另一个线程写入相应的PipedOutputStream
。不建议尝试从单个线程中使用这两个对象,因为这可能会导致线程死锁。管道输入流包含一个缓冲区,将读操作与写操作解耦,但有一定限制。如果提供数据字节给连接的管道输出流的线程不再活动,则管道被称为 broken 。
- 自从:
- 1.0
- 参见:
-
Field Summary
-
Constructor Summary
ConstructorDescription创建一个PipedInputStream
,使其尚未连接。PipedInputStream
(int pipeSize) 创建一个PipedInputStream
,使其尚未连接,并为管道的缓冲区使用指定的管道大小。创建一个PipedInputStream
,使其连接到管道输出流src
。PipedInputStream
(PipedOutputStream src, int pipeSize) 创建一个PipedInputStream
,使其连接到管道输出流src
,并为管道的缓冲区使用指定的管道大小。 -
Method Summary
Methods declared in class java.io.InputStream
mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferTo
-
Field Details
-
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
-
-
Constructor Details
-
PipedInputStream
创建一个PipedInputStream
,使其连接到管道输出流src
。写入src
的数据字节将作为此流的输入可用。- 参数:
-
src
- 要连接的流。 - 抛出:
-
IOException
- 如果发生I/O错误。
-
PipedInputStream
创建一个PipedInputStream
,使其连接到管道输出流src
,并为管道的缓冲区使用指定的管道大小。写入src
的数据字节将作为此流的输入可用。- 参数:
-
src
- 要连接的流。 -
pipeSize
- 管道缓冲区的大小。 - 抛出:
-
IOException
- 如果发生I/O错误。 -
IllegalArgumentException
- 如果pipeSize <= 0
。 - 自从:
- 1.6
-
PipedInputStream
public PipedInputStream() -
PipedInputStream
public PipedInputStream(int pipeSize) - 参数:
-
pipeSize
- 管道缓冲区的大小。 - 抛出:
-
IllegalArgumentException
- 如果pipeSize <= 0
。 - 自从:
- 1.6
-
-
Method Details
-
connect
使此管道输入流连接到管道输出流src
。如果此对象已连接到其他管道输出流,则会抛出IOException
。如果
src
是未连接的管道输出流,snk
是未连接的管道输入流,则可以通过以下调用之一将它们连接:snk.connect(src)
或者调用:
src.connect(snk)
这两个调用具有相同的效果。
- 参数:
-
src
- 要连接的管道输出流。 - 抛出:
-
IOException
- 如果发生I/O错误。
-
receive
接收一个数据字节。如果没有输入可用,此方法将阻塞。- 参数:
-
b
- 被接收的字节 - 抛出:
-
IOException
- 如果管道broken
,unconnected
,关闭,或者发生I/O错误。 - 自从:
- 1.1
-
read
从此管道输入流读取下一个数据字节。值字节作为int
返回,范围为0
到255
。此方法将阻塞,直到有输入数据可用,检测到流的结束,或抛出异常。- 指定者:
-
read
在类InputStream
- 返回:
-
下一个数据字节,如果达到流的末尾,则返回
-1
。 - 抛出:
-
IOException
- 如果管道unconnected
,broken
,关闭,或者发生I/O错误。
-
read
从此管道输入流中读取最多len
字节的数据到字节数组中。如果达到数据流的末尾或者len
超过管道的缓冲区大小,则将读取少于len
字节。如果len
为零,则不会读取任何字节,并返回0;否则,该方法将阻塞,直到至少有1个字节的输入可用,检测到流的结束,或抛出异常。- 覆盖:
-
read
在类InputStream
- 参数:
-
b
- 数据读入的缓冲区。 -
off
- 写入数据的数组b
中的起始偏移量。 -
len
- 要读取的最大字节数。 - 返回:
-
读入缓冲区的总字节数,如果没有更多数据因为已达到流的末尾,则返回
-1
。 - 抛出:
-
NullPointerException
- 如果b
为null
。 -
IndexOutOfBoundsException
- 如果off
为负数,len
为负数,或者len
大于b.length - off
-
IOException
- 如果管道broken
,unconnected
,关闭,或者发生I/O错误。 - 参见:
-
available
返回可以从此输入流中读取而不阻塞的字节数。- 覆盖:
-
available
在类InputStream
- 返回:
-
可从此输入流中读取而不阻塞的字节数,如果通过调用其
close()
方法关闭了此输入流,或者管道是未连接
,或者损坏
,则返回0
。 - 抛出:
-
IOException
- 如果发生I/O错误。 - 自:
- 1.0.2
-
close
关闭此输入流并释放与流相关的任何系统资源。- 指定者:
-
close
在接口AutoCloseable
- 指定者:
-
close
在接口Closeable
- 覆盖:
-
close
在类InputStream
- 抛出:
-
IOException
- 如果发生I/O错误。
-