你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

BlobInputStream 类

  • java.lang.Object
    • InputStream
      • com.microsoft.azure.storage.blob.BlobInputStream

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 类的新实例。 请注意,如果blobRangeOffset

</code> is not<code>0 

</code> or<code>blobRangeLength 

</code> is not<code>null 

</code> , there will be no content MD5 verification.</p>

方法摘要

修饰符和类型 方法和描述
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:

parentBlob - 一个 CloudBlob 对象,表示与此流关联的 Blob。
accessCondition - 一个 AccessCondition 对象,表示 Blob 的访问条件。
options - 一个 BlobRequestOptions 对象,该对象表示指定请求的任何其他选项。
opContext - 一个 OperationContext 对象,用于跟踪操作的执行。

Throws:

StorageException - 表示操作期间发生的任何错误的异常。

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 - 如果数组bbyte 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 - 如果数组bbyte 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 它表示要跳过的字节数。

适用于