- java.lang.Object
-
- java.io.InputStream
-
- java.io.PipedInputStream
-
- 实现的所有接口
-
Closeable,AutoCloseable
public class PipedInputStream extends InputStream
管道输入流应连接到管道输出流; 然后,管道输入流提供写入管道输出流的任何数据字节。 通常,一个线程从PipedInputStream对象读取数据,并且某些其他线程将数据写入相应的PipedOutputStream。 建议不要尝试使用单个线程中的两个对象,因为它可能使线程死锁。 管道输入流包含缓冲区,在一定限度内将读操作与写操作解耦。 如果为连接的管道输出流提供数据字节的线程不再存在, 则称管道为broken 。- 从以下版本开始:
- 1.0
- 另请参见:
-
PipedOutputStream
-
-
构造方法摘要
构造方法 构造器 描述 PipedInputStream()创建一个PipedInputStream,使它还不是 connected 。PipedInputStream(int pipeSize)创建一个PipedInputStream,使其尚未 connected并使用指定的管道大小作为管道缓冲区。PipedInputStream(PipedOutputStream src)创建PipedInputStream,使其连接到管道输出流src。PipedInputStream(PipedOutputStream src, int pipeSize)创建一个PipedInputStream,使其连接到管道输出流src并使用指定的管道大小作为管道缓冲区。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 intavailable()返回可以在不阻塞的情况下从此输入流中读取的字节数。voidclose()关闭此管道输入流并释放与该流关联的所有系统资源。voidconnect(PipedOutputStream src)使此管道输入流连接到管道输出流src。intread()从此管道输入流中读取下一个数据字节。intread(byte[] b, int off, int len)从此管道输入流len最多len个字节的数据读入一个字节数组。protected voidreceive(int b)接收一个字节的数据。-
声明方法的类 java.io.InputStream
mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, 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
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
public PipedInputStream(int pipeSize)
创建一个PipedInputStream,使它还不是connected,并使用指定的管道大小作为管道的缓冲区。 在使用之前必须是connected到PipedOutputStream。- 参数
-
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返回,范围为0至255。 此方法将阻塞,直到输入数据可用,检测到流的末尾或抛出异常。- 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个字节可用,已检测到流的末尾,或者抛出异常。- 重写:
-
read类InputStream - 参数
-
b- 读取数据的缓冲区。 -
off- 目标阵列b的起始偏移量 -
len- 读取的最大字节数。 - 结果
-
读入缓冲区的总字节数,如果由于已到达流末尾而没有更多数据,
-1。 - 异常
-
NullPointerException- 如果b是null。 -
IndexOutOfBoundsException- 如果off为负数,len为负数,或者len为大于b.length - off -
IOException- 如果管道为broken,unconnected, 已关闭,或者是否发生I / O错误。 - 另请参见:
-
InputStream.read()
-
available
public int available() throws IOException返回可以在不阻塞的情况下从此输入流中读取的字节数。- 重写:
-
available类InputStream - 结果
-
可以从该输入流无阻塞读取,或字节数
0该输入流是否已调用它的关闭close()方法,或者如果管道是unconnected,或broken。 - 异常
-
IOException- 如果发生I / O错误。 - 从以下版本开始:
- 1.0.2
-
close
public void close() throws IOException关闭此管道输入流并释放与该流关联的所有系统资源。- Specified by:
-
close,界面AutoCloseable - Specified by:
-
close在界面Closeable - 重写:
-
close,类InputStream - 异常
-
IOException- 如果发生I / O错误。
-
-