你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
SubStream 类
- java.
lang. Object - InputStream
- com.
microsoft. azure. storage. blob. SubStream
- com.
public class SubStream
构造函数摘要
构造函数 | 说明 |
---|---|
SubStream(InputStream source, long startIndex, long streamLength, Object lock) |
创建一个新的子流实例,该实例将包装的流从 向上分区。 包装相同基础的每个子流实例必须共享相同的互斥,以避免并发操作的争用条件。 |
方法摘要
修饰符和类型 | 方法和描述 |
---|---|
void |
close()
关闭子流。 |
InputStream | getInputStream() |
long | getLength() |
synchronized void |
mark(int readlimit)
标记子流中的当前位置。 对 方法的后续调用会将流重新定位到此存储位置。 |
boolean |
markSupported()
子流包装器类仅与可标记输入流兼容,因此始终返回 true。 此要求在类构造函数中强制执行。 |
int |
read()
从包装的流中读取下一字节的数据。 值字节作为 在 范围中返回。 如果由于已到达子流的末尾而没有可用的字节,则返回 值。 此方法会阻止,直到输入数据可用、检测到流的末尾或引发异常。 |
synchronized int |
read(byte[] b)
从包装的流中读取一定数量的字节,并将其存储在缓冲区数组 中。 实际读取的字节数作为整数返回。 此方法会阻止,直到输入数据可用、检测到文件末尾或引发异常。 如果 的长度为零,则不读取任何字节并返回;否则,将尝试读取至少一个字节。 如果由于子流位于文件末尾而没有字节可用,则返回 值;否则,至少读取一个字节并将其存储到 中。 第一个字节读取存储在 元素中,下一个字节将存储到 中,依此存储。 读取的字节数最多等于 的长度。 让 k 是实际读取的字节数;这些字节将通过 k 存储在元素中,使元素 k 不受影响。 类的 方法具有相同的效果: |
synchronized int |
read(byte[] b, int off, int len)
从子流中读取最多字节的数据。 缓冲包装流中的数据,以最大程度地减少跳过和读取开销。 仅当 readBuffer 无法满足读取请求时,才会调用包装流。 为了确保结果有效,必须在从子流读取之前标记包装的流。 这允许我们重置为包装流中的相对子流位置。 实际读取的字节数以整数形式返回。 所有这些操作都是在固有锁内同步完成的,以确保子流实例的其他并发请求不会导致争用条件。 对包装流读取的基础调用将阻止,直到输入数据可用、检测到文件结尾或引发异常为止。 如果 为零,则不读取任何字节并返回;否则,将尝试读取至少一个字节。 如果由于子流位于文件末尾而没有可用的字节,则返回值;否则,至少读取一个字节并将其存储到 中。 |
synchronized void |
reset()
将子流位置重新定位到上次调用方法的索引。 子流上的新重置位置在后续读取之前不会生效。 |
long |
skip(long n)
通过 向前推进子流的当前位置。 方法不调用包装流类的基础方法。 在后续子流读取操作期间,将考虑实际跳过的字节数。 |
构造函数详细信息
SubStream
public SubStream(InputStream source, long startIndex, long streamLength, Object lock)
创建一个新的子流实例,该实例将包装的流从 向上分区。 包装相同基础的每个子流实例必须共享相同的互斥,以避免并发操作的争用条件。
Parameters:
方法详细信息
close
public void close()
关闭子流。
getInputStream
public InputStream getInputStream()
getLength
public long getLength()
mark
public synchronized void mark(int readlimit)
标记子流中的当前位置。 对 方法的后续调用会将流重新定位到此存储位置。
Parameters:
markSupported
public boolean markSupported()
子流包装器类仅与可标记输入流兼容,因此始终返回 true。 此要求在类构造函数中强制执行。
Returns:
true
read
public int read()
从包装的流中读取下一字节的数据。 值字节作为 在 范围中返回。 如果由于已到达子流的末尾而没有可用的字节,则返回 值。 此方法会阻止,直到输入数据可用、检测到流的末尾或引发异常。
Returns:
-1
,如果已到达子流的末尾,则为 。Throws:
read
public synchronized int read(byte[] b)
从包装的流中读取一定数量的字节,并将其存储在缓冲区数组 中。 实际读取的字节数作为整数返回。 此方法会阻止,直到输入数据可用、检测到文件末尾或引发异常。
如果 的长度为零,则不读取任何字节并返回;否则,将尝试读取至少一个字节。 如果由于子流位于文件末尾而没有字节可用,则返回 值;否则,至少读取一个字节并将其存储到 中。
第一个字节读取存储在 元素中,下一个字节将存储到 中,依此存储。 读取的字节数最多等于 的长度。 让 k 是实际读取的字节数;这些字节将通过 k 存储在元素中,使元素 k 不受影响。
类的 方法具有相同的效果:
Parameters:
Returns:
-1
如果没有其他数据,因为已到达流的末尾。Throws:
null
为 b
。
read
public synchronized int read(byte[] b, int off, int len)
从子流中读取最多字节的数据。 缓冲包装流中的数据,以最大程度地减少跳过和读取开销。 仅当 readBuffer 无法满足读取请求时,才会调用包装流。 为了确保结果有效,必须在从子流读取之前标记包装的流。 这允许我们重置为包装流中的相对子流位置。 实际读取的字节数以整数形式返回。 所有这些操作都是在固有锁内同步完成的,以确保子流实例的其他并发请求不会导致争用条件。
对包装流读取的基础调用将阻止,直到输入数据可用、检测到文件结尾或引发异常为止。
如果 为零,则不读取任何字节并返回;否则,将尝试读取至少一个字节。 如果由于子流位于文件末尾而没有可用的字节,则返回值;否则,至少读取一个字节并将其存储到 中。
Parameters:
b
中写入数据的起始偏移量。
Returns:
-1
则为没有更多数据。Throws:
b
为 null
。
off
为负数、 len
为负数或 len
大于 b.length - off
reset
public synchronized void reset()
将子流位置重新定位到上次调用方法的索引。
子流上的新重置位置在后续读取之前不会生效。
skip
public long skip(long n)
通过 向前推进子流的当前位置。 方法不调用包装流类的基础方法。 在后续子流读取操作期间,将考虑实际跳过的字节数。
Parameters:
Returns: