你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
BlobInputStream 类
- java.
lang. Object - InputStream
- com.
microsoft. azure. storage. blob. BlobInputStream
- com.
public class BlobInputStream
提供用于读取给定 Blob 资源的输入流。
构造函数摘要
构造函数 | 说明 |
---|---|
BlobInputStream(final CloudBlob parentBlob, final AccessCondition accessCondition, final BlobRequestOptions options, final OperationContext opContext) |
初始化 BlobInputStream 类的新实例。 |
BlobInputStream(long blobRangeOffset, Long blobRangeLength, final CloudBlob parentBlob, final AccessCondition accessCondition, final BlobRequestOptions options, final OperationContext opContext) |
初始化 BlobInputStream 类的新实例。 请注意,如果
|
方法摘要
修饰符和类型 | 方法和描述 |
---|---|
synchronized int |
available()
返回可 (读取或跳过此输入流中) 的字节数的估计值,而不会因下一次调用此输入流的方法而阻塞。 下一次调用可能是同一线程或另一个线程。 如此多字节的单个读取或跳过不会阻止,但可能会读取或跳过更少的字节。 |
synchronized void |
close()
关闭此输入流并释放与该流关联的任何系统资源。 |
synchronized void |
mark(final int readlimit)
标记此输入流中的当前位置。 对 reset 方法的后续调用会将此流重新定位到最后标记的位置,以便后续读取重新读取相同的字节。 |
boolean |
markSupported()
测试此输入流是否支持标记和重置方法。 是否支持标记和重置是特定输入流实例的固定属性。 的 markSupported 方法 InputStream 返回 false。 |
int |
read()
从输入流中读取下一个字节的数据。 值字节作为 int 返回,范围为 0 到 255。 如果由于已到达流的末尾而没有可用的字节,则返回值 -1。 此方法在输入数据可用、检测到流的末尾或引发异常之前进行阻止。 |
int |
read(final byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 中。 实际读取的字节数以整数形式返回。 此方法在输入数据可用、检测到文件结尾或引发异常之前进行阻止。 如果 的长度为零,则不读取任何字节并返回 0;否则,将尝试读取至少一个字节。 如果由于流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少读取一个字节并将其存储到 中。 第一个字节读取存储到 元素中,下一个字节存储到 中,依类而行。 读取的字节数最多等于 的长度。 让 是实际读取的字节数;这些字节将通过 存储在 元素中,使元素不受影响。 类 InputStream 的 方法具有相同的效果: |
int |
read(final byte[] b, final int off, final int len)
将输入流中最多字节的数据读入字节数组。 尝试读取尽可能多的字节,但可能会读取较小的字节数。 实际读取的字节数以整数形式返回。 此方法在输入数据可用、检测到文件结尾或引发异常之前进行阻止。 如果 为零,则不读取任何字节并返回 0;否则,将尝试读取至少一个字节。 如果由于流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少读取一个字节并将其存储到 中。 第一个字节读取存储到 元素中,下一个字节存储到 中,依类而行。 读取的字节数最多等于 。 让 是实际读取的字节数;这些字节将通过 存储在 元素中,使元素不受影响。 在每种情况下,通过 的元素和 通过 的元素都不受影响。 类 InputStream 的 方法只是重复调用 方法。 如果第一个此类调用导致 ,则从对 方法的调用返回该异常。 如果对 的任何后续调用导致 ,则会捕获异常并将其视为文件结尾;读取到该点的字节存储到 中,并返回异常发生前读取的字节数。 此方法的默认实现将阻止,直到读取请求的输入数据量、检测到文件末尾或引发异常为止。 建议子类提供此方法的更高效实现。 |
synchronized void |
reset()
将此流重新定位到上次在此输入流上调用 mark 方法时的位置。 请注意,重新定位 Blob 读取流将禁用 blob MD5 检查。 |
synchronized long |
skip(final long n)
跳过并丢弃此输入流中的 n 个字节的数据。 由于各种原因,skip 方法最终可能会跳过一些较小的字节数(可能为 0)。 这可能是由多种条件中的任何一种导致的;在跳过 n 个字节之前到达文件末尾只是一种可能性。 返回跳过的实际字节数。 如果 n 为负数,则不跳过任何字节。 请注意,重新定位 Blob 读取流将禁用 blob MD5 检查。 |
构造函数详细信息
BlobInputStream
protected BlobInputStream(final CloudBlob parentBlob, final AccessCondition accessCondition, final BlobRequestOptions options, final OperationContext opContext)
初始化 BlobInputStream 类的新实例。
Parameters:
Throws:
BlobInputStream
protected BlobInputStream(long blobRangeOffset, Long blobRangeLength, final CloudBlob parentBlob, final AccessCondition accessCondition, final BlobRequestOptions options, final OperationContext opContext)
初始化 BlobInputStream 类的新实例。 请注意,如果blobRangeOffset
</code> is not<code>0
</code> or<code>blobRangeLength
</code> is not<code>null
</code> , there will be no content MD5 verification.</p>
Parameters:
blobRangeOffset
- 要开始流式传输的 Blob 数据的偏移量。
blobRangeLength
- blobRangeOffset 后流应返回多少数据。
parentBlob
- 一个 CloudBlob 对象,表示与此流关联的 Blob。
accessCondition
- 一个 AccessCondition 对象,表示 Blob 的访问条件。
options
- 一个 BlobRequestOptions 对象,该对象表示指定请求的任何其他选项。
opContext
- 一个 OperationContext 对象,用于跟踪操作的执行。
Throws:
StorageException
- 表示操作期间发生的任何错误的异常。
方法详细信息
available
public synchronized int available()
返回可 (读取或跳过此输入流中) 的字节数的估计值,而不会因下一次调用此输入流的方法而阻塞。 下一次调用可能是同一线程或另一个线程。 如此多字节的单个读取或跳过不会阻止,但可能会读取或跳过更少的字节。
Returns:
一 int
个 ,表示可在不阻塞的情况下从此输入流中读取或跳过) (或跳过的字节数的估计值,或当它到达输入流的末尾时为 0。
Throws:
IOException
- 如果发生 I/O 错误。
close
public synchronized void close()
关闭此输入流并释放与该流关联的任何系统资源。
Throws:
IOException
- 如果发生 I/O 错误。
mark
public synchronized void mark(final int readlimit)
标记此输入流中的当前位置。 对 reset 方法的后续调用会将此流重新定位到最后标记的位置,以便后续读取重新读取相同的字节。
Parameters:
readlimit
- 一个 , int
表示标记位置变为无效之前可读取的最大字节数限制。
markSupported
public boolean markSupported()
测试此输入流是否支持标记和重置方法。 是否支持标记和重置是特定输入流实例的固定属性。 的 markSupported 方法 InputStream 返回 false。
Returns:
True
如果此流实例支持标记和重置方法,则为 ; False
否则。
read
public int read()
从输入流中读取下一个字节的数据。 值字节作为 int 返回,范围为 0 到 255。 如果由于已到达流的末尾而没有可用的字节,则返回值 -1。 此方法在输入数据可用、检测到流的末尾或引发异常之前进行阻止。
Returns:
一个 int
,表示读入缓冲区的字节总数;如果由于已到达流的末尾而没有更多数据,则为 -1。
Throws:
IOException
- 如果发生 I/O 错误。
read
public int read(final byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 中。 实际读取的字节数以整数形式返回。 此方法在输入数据可用、检测到文件结尾或引发异常之前进行阻止。 如果 的长度为零,则不读取任何字节并返回 0;否则,将尝试读取至少一个字节。 如果由于流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少读取一个字节并将其存储到 中。
第一个字节读取存储到 元素中,下一个字节存储到 中,依类而行。 读取的字节数最多等于 的长度。 让 是实际读取的字节数;这些字节将通过 存储在 元素中,使元素不受影响。
类 InputStream 的 方法具有相同的效果:
Parameters:
b
- 一个 byte
数组,表示在其中读取数据的缓冲区。
Throws:
IOException
- 如果第一个字节由于文件末尾以外的任何原因而无法读取,则为 ,如果输入流已关闭,或者如果发生其他 I/O 错误,则为 。
NullPointerException
- 如果数组b
为 byte
null,则为 。
read
public int read(final byte[] b, final int off, final int len)
将输入流中最多字节的数据读入字节数组。 尝试读取尽可能多的字节,但可能会读取较小的字节数。 实际读取的字节数以整数形式返回。 此方法在输入数据可用、检测到文件结尾或引发异常之前进行阻止。
如果 为零,则不读取任何字节并返回 0;否则,将尝试读取至少一个字节。 如果由于流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少读取一个字节并将其存储到 中。
第一个字节读取存储到 元素中,下一个字节存储到 中,依类而行。 读取的字节数最多等于 。 让 是实际读取的字节数;这些字节将通过 存储在 元素中,使元素不受影响。
在每种情况下,通过 的元素和 通过 的元素都不受影响。
类 InputStream 的 方法只是重复调用 方法。 如果第一个此类调用导致 ,则从对 方法的调用返回该异常。 如果对 的任何后续调用导致 ,则会捕获异常并将其视为文件结尾;读取到该点的字节存储到 中,并返回异常发生前读取的字节数。 此方法的默认实现将阻止,直到读取请求的输入数据量、检测到文件末尾或引发异常为止。 建议子类提供此方法的更高效实现。
Parameters:
b
- 一个 byte
数组,表示在其中读取数据的缓冲区。
off
- 一个 int
,表示写入数据的数组中的 byte
起始偏移量。
len
- 一个 int
,表示要读取的最大字节数。
Returns:
一个 int
,表示读入缓冲区的字节总数;如果由于已到达流的末尾而没有更多数据,则为 -1。
Throws:
IOException
- 如果第一个字节因文件结尾以外的任何原因而无法读取,或者输入流已关闭,或者发生其他 I/O 错误。
NullPointerException
- 如果数组b
为 byte
null,则为 。
IndexOutOfBoundsException
- 如果 off
为负数, len
则为负数或 len
大于 b.length - off
。
reset
public synchronized void reset()
将此流重新定位到上次在此输入流上调用 mark 方法时的位置。 请注意,重新定位 Blob 读取流将禁用 blob MD5 检查。
Throws:
IOException
- 如果尚未标记此流,或者标记已失效,则为 。
skip
public synchronized long skip(final long n)
跳过并丢弃此输入流中的 n 个字节的数据。 由于各种原因,skip 方法最终可能会跳过一些较小的字节数(可能为 0)。 这可能是由多种条件中的任何一种导致的;在跳过 n 个字节之前到达文件末尾只是一种可能性。 返回跳过的实际字节数。 如果 n 为负数,则不跳过任何字节。
请注意,重新定位 Blob 读取流将禁用 blob MD5 检查。
Parameters:
n
- , long
它表示要跳过的字节数。
适用于