返回介绍

java.io 类 PipedInputStream

发布于 2019-10-04 09:50:50 字数 8436 浏览 802 评论 0 收藏 0

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

public class PipedInputStream
extends InputStream
 

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

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

字段摘要
protected byte[]buffer

放置传入数据的循环缓冲区。

protected intin

循环缓冲区中的位置索引,当从连接的传送输出流中接收到下一个数据字节时,会将其存储到该缓冲区。

protected intout

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

protected staticintPIPE_SIZE

管道的循环输入缓冲区的大小。

构造方法摘要
PipedInputStream()

创建尚未连接的 PipedInputStream

PipedInputStream(PipedOutputStreamsrc)

创建 PipedInputStream ,以使其连接到传送输出流 src

方法摘要
intavailable()

返回可以不受阻塞地从此输入流中读取的字节数量。

voidclose()

关闭此传送输入流并释放与该流相关的所有系统资源。

voidconnect(PipedOutputStreamsrc)

使此传送输入流连接到传送输出流 src

intread()

读取此传送输入流中的下一个数据字节。

intread(byte[]b, intoff, intlen)

将最多 len 个数据字节从此传送输入流读入字节数组。

protected voidreceive(intb)

接收数据字节。

从类 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(PipedOutputStreamsrc)
                 throws IOException
创建 PipedInputStream ,以使其连接到传送输出流 src 。写入 src 的数据字节稍后将用作此流的输入。
参数:
src - 要连接的流。
抛出:
IOException - 如果发生 I/O 错误。

PipedInputStream

public PipedInputStream()
创建尚未连接的 PipedInputStream 。必须在使用之前将其连接到 PipedOutputStream
另请参见:
connect(java.io.PipedOutputStream) , PipedOutputStream.connect(java.io.PipedInputStream)

方法详细信息

connect

public void connect(PipedOutputStreamsrc)
             throws IOException
使此传送输入流连接到传送输出流 src 。如果此对象已经连接到其他某个传送输出流,则抛出 IOException

如果 src 为未连接的传送输出流, snk 为未连接的传送输入流,则可以通过以下任一调用使其连接:

snk.connect(src)

或:

src.connect(snk)

这两个调用的效果相同。

参数:
src - 要连接的传送输出流。
抛出:
IOException - 如果发生 I/O 错误。

receive

protected void receive(intb)
                throws IOException
接收数据字节。如果不存在可用的输入,此方法将发生阻塞。
参数:
b - 正接收的字节
抛出:
IOException - 如果传送管道损坏。
从以下版本开始:
JDK1.1

read

public int read()
         throws IOException
读取此传送输入流中的下一个数据字节。返回 0255 范围内的 int 字节值。如果因流的末尾已到达而没有可用的字节,则返回值 -1 。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。如果某个线程正向连接的传送输出流提供数据字节,但该线程不再处于活动状态,则抛出 IOException
指定者:
InputStream 中的 read
返回:
下一个数据字节,如果到达流的末尾,则返回 -1
抛出:
IOException - 如果传输管道损坏。

read

public int read(byte[]b,
                intoff,
                intlen)
         throws IOException
将最多 len 个数据字节从此传送输入流读入字节数组。如果已到达数据流的末尾,则读取的字节数少于 len 。在至少一个输入字节可用前,此方法一直阻塞。如果某个线程正向连接的传送输出流提供数据字节,但该线程不再处于活动状态,则抛出 IOException
覆盖:
InputStream 中的 read
参数:
b - 读入数据的缓冲区。
off - 数据的初始偏移量。
len - 读取的最多字节数。
返回:
读入缓冲区的总字节数,如果由于流末尾已到达而不再有数据,则返回 -1
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
InputStream.read()

available

public int available()
              throws IOException
返回可以不受阻塞地从此输入流中读取的字节数量。此方法可重写父类的 available 方法。
覆盖:
InputStream 中的 available
返回:
可以不受阻塞地从此输入流读取的字节数。
抛出:
IOException - 如果发生 I/O 错误。
从以下版本开始:
JDK1.0.2

close

public void close()
           throws IOException
关闭此传送输入流并释放与该流相关的所有系统资源。
指定者:
接口 Closeable 中的 close
覆盖:
InputStream 中的 close
抛出:
IOException - 如果发生 I/O 错误。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文