JavaTM Platform
Standard Ed. 6

java.io
类 PipedInputStream

java.lang.Object
  继承者 java.io.InputStream
      继承者 java.io.PipedInputStream
所有已实现的接口:
Closeable

public class PipedInputStream
     
extends InputStream

管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能死锁线程。管道输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。 如果向连接管道输出流提供数据字节的线程不再存在,则认为该管道已损坏

从以下版本开始:
JDK1.0
另请参见:
PipedOutputStream

字段摘要
protected  byte[] buffer
          放置传入数据的循环缓冲区。
protected  int in
          循环缓冲区中位置的索引,当从连接的管道输出流中接收到下一个数据字节时,会将其存储到该位置。
protected  int out
          循环缓冲区中位置的索引,此管道输入流将从该位置读取下一个数据字节。
protected static int PIPE_SIZE
          管道循环输入缓冲区的默认大小。
 
构造方法摘要
PipedInputStream()
          创建尚未连接PipedInputStream
PipedInputStream(int pipeSize)
          创建一个尚未连接PipedInputStream,并对管道缓冲区使用指定的管道大小。
PipedInputStream(PipedOutputStream src)
          创建 PipedInputStream,使其连接到管道输出流 src
PipedInputStream(PipedOutputStream src, int pipeSize)
          创建一个 PipedInputStream,使其连接到管道输出流 src,并对管道缓冲区使用指定的管道大小。
 
方法摘要
 int available()
          返回可以不受阻塞地从此输入流中读取的字节数。
 void close()
          关闭此管道输入流并释放与该流相关的所有系统资源。
 void connect(PipedOutputStream src)
          使此管道输入流连接到管道输出流 src
 int read()
          读取此管道输入流中的下一个数据字节。
 int read(byte[] b, int off, int len)
          将最多 len 个数据字节从此管道输入流读入 byte 数组。
protected  void receive(int b)
          接收数据字节。
 
从类 java.io.InputStream 继承的方法
mark, markSupported, read, reset, skip
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

PIPE_SIZE

protected static final int PIPE_SIZE
管道循环输入缓冲区的默认大小。

从以下版本开始:
JDK1.1
另请参见:
常量字段值

buffer

protected byte[] buffer
放置传入数据的循环缓冲区。

从以下版本开始:
JDK1.1

in

protected int in
循环缓冲区中位置的索引,当从连接的管道输出流中接收到下一个数据字节时,会将其存储到该位置。 in<0 意味着缓冲区为空, in==out 意味着缓冲区已满。

从以下版本开始:
JDK1.1

out

protected int out
循环缓冲区中位置的索引,此管道输入流将从该位置读取下一个数据字节。

从以下版本开始:
JDK1.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。在使用前必须将其 连接PipedOutputStream


PipedInputStream

public PipedInputStream(int pipeSize)
创建一个尚未 连接PipedInputStream,并对管道缓冲区使用指定的管道大小。在使用前必须将其 连接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 - 如果管道 损坏未连接、关闭,或者发生 I/O 错误。
从以下版本开始:
JDK1.1

read

public int read()
         throws IOException
读取此管道输入流中的下一个数据字节。返回 0255 范围内的 int 字节值。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:
InputStream 中的 read
返回:
下一个数据字节;如果已到达流末尾,则返回 -1
抛出:
IOException - 如果管道 未连接损坏、关闭,或者发生 I/O 错误。

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
将最多 len 个数据字节从此管道输入流读入 byte 数组。如果已到达数据流的末尾,或者 len 超出管道缓冲区大小,则读取的字节数将少于 len。如果 len 为 0,则不读取任何字节并返回 0;否则,在至少 1 个输入字节可用、检测到流末尾、抛出异常前,该方法将一直阻塞。

覆盖:
InputStream 中的 read
参数:
b - 读入数据的缓冲区。
off - 目标数组 b 中的初始偏移量。
len - 读取的最多字节数。
返回:
读入缓冲区的总字节数;如果由于已到达流末尾而不再有数据,则返回 -1
抛出:
NullPointerException - 如果 bnull
IndexOutOfBoundsException - 如果 off 为负, len 为负,或者 len 大于 b.length - off
IOException - 如果管道 损坏未连接、关闭,或者发生 I/O 错误。
另请参见:
InputStream.read()

available

public int available()
              throws IOException
返回可以不受阻塞地从此输入流中读取的字节数。

覆盖:
InputStream 中的 available
返回:
可以不受阻塞地从此输入流读取的字节数;如果已经调用 close() 方法关闭此输入流、管道 未连接或已 损坏,则返回 0
抛出:
IOException - 如果发生 I/O 错误。
从以下版本开始:
JDK1.0.2

close

public void close()
           throws IOException
关闭此管道输入流并释放与该流相关的所有系统资源。

指定者:
接口 Closeable 中的 close
覆盖:
InputStream 中的 close
抛出:
IOException - 如果发生 I/O 错误。

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策