java.lang.Object
java.io.InputStream
java.io.PipedInputStream
- 所有已实现的接口:
Closeable,AutoCloseable
管道输入流应该连接到管道输出流;管道输入流然后提供写入管道输出流的任何数据字节。通常,数据由一个线程从
PipedInputStream 对象读取,数据由其他线程写入相应的PipedOutputStream。不建议尝试从单个线程中使用这两个对象,因为它可能会使线程死锁。管道输入流包含一个缓冲区,在限制范围内将读取操作与写入操作分离。如果向连接的管道输出流提供数据字节的线程不再存在,则称管道为 破碎的 。
- 自从:
- 1.0
- 参见:
-
字段摘要
字段 -
构造方法总结
构造方法构造方法描述创建一个PipedInputStream所以它还不是 connected 。PipedInputStream(int pipeSize) 创建一个PipedInputStream以便它还不是 connected 并使用指定的管道大小作为管道缓冲区。创建一个PipedInputStream以便它连接到管道输出流src。PipedInputStream(PipedOutputStream src, int pipeSize) 创建一个PipedInputStream以便它连接到管道输出流src并使用指定的管道大小作为管道缓冲区。 -
方法总结
在类 java.io.InputStream 中声明的方法
mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferTo
-
字段详细信息
-
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
创建一个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
-
-
方法详情
-
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 - offIOException- 如果管道为broken、unconnected、已关闭,或者发生 I/O 错误。- 参见:
-
available
返回可以从该输入流中无阻塞地读取的字节数。- 重写:
available在类InputStream中- 返回:
-
可以从该输入流中无阻塞读取的字节数,或者
0如果该输入流已通过调用它的close()方法关闭,或者如果管道是unconnected或broken。 - 抛出:
IOException- 如果发生 I/O 错误。- 自从:
- 1.0.2
-
close
关闭此输入流并释放与该流关联的所有系统资源。- 指定者:
close在接口AutoCloseable中- 指定者:
close在接口Closeable中- 重写:
close在类InputStream中- 抛出:
IOException- 如果发生 I/O 错误。
-