SubStream クラス

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

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()

ラップされたストリームから次のバイトのデータを読み取ります。 値 byte は、 の範囲内の として返されます。 サブストリームの末尾に達したためにバイトが使用できない場合は、値が返されます。 このメソッドは、入力データが使用可能になるまで、ストリームの末尾が検出されるか、例外がスローされるまでブロックします。

synchronized int read(byte[] b)

ラップされたストリームからバイト数を読み取り、バッファー配列 に格納します。 実際に読み取られたバイト数は整数として返されます。 このメソッドは、入力データが使用可能か、ファイルの終わりが検出されるか、例外がスローされるまでブロックします。

の長さが 0 の場合、バイトは読み取られず、返されます。それ以外の場合は、少なくとも 1 バイトを読み取ろうとします。 サブストリームがファイルの末尾にあるためにバイトが使用できない場合は、値が返されます。それ以外の場合は、少なくとも 1 バイトが読み取られ、 に格納されます。

最初のバイト読み取りは 要素に格納され、次のバイトは に格納されます。 読み取られたバイト数は、最大で の長さと同じです。 k を実際に読み取ったバイト数にします。これらのバイトは k を通じて要素に格納され、要素 k は影響を受けません。

クラスの メソッドは、次と同じ効果を持ちます。

synchronized int read(byte[] b, int off, int len)

サブストリームから最大バイトのデータを読み取ります。 スキップと読み取りのオーバーヘッドを最小限に抑えるために、ラップされたストリームからデータをバッファーします。 ラップされたストリームは、readBuffer が読み取り要求を満たすことができない場合にのみ呼び出されます。 有効な結果を確保するには、ラップされたストリームをサブストリームから読み取る前にマークする必要があります。 これにより、ラップされたストリーム内の相対サブストリーム位置にリセットできます。 実際に読み取られたバイト数は整数として返されます。 これらの操作はすべて組み込みロック内で同期的に実行され、サブストリーム インスタンスによる他の同時要求が競合状態にならないようにします。

ラップされたストリームの読み取りの基になる呼び出しは、入力データが使用可能になるまで、ファイルの終わりが検出されるか、例外がスローされるまでブロックされます。

が 0 の場合、バイトは読み取られず、返されます。それ以外の場合は、少なくとも 1 バイトを読み取ろうとします。 サブストリームがファイルの末尾にあるために使用可能なバイトがない場合は、値が返されます。それ以外の場合は、少なくとも 1 バイトが 読み取られ、 に格納されます。

synchronized void reset()

サブストリームの位置を、メソッドが最後に呼び出されたインデックスに位置を変更します。

サブストリームの新しいリセット位置は、後続の読み取りまで有効になりません。

long skip(long n)

によってサブストリームの現在位置を進めます。 メソッドは、ラップされたストリーム クラスの基になるメソッドを呼び出しません。 バイトの実際のスキップは、後続のサブストリーム読み取り操作中に考慮されます。

コンストラクターの詳細

SubStream

public SubStream(InputStream source, long startIndex, long streamLength, Object lock)

ラップされたストリームを から までパーティション分割する新しいサブストリーム インスタンスを作成します。 同じ基になるをラップする各サブストリーム インスタンスは、同時実行操作による競合状態を回避するために、同じ相互除外を共有する必要があります。

Parameters:

source - ラップするマーク可能な InputStream。
startIndex - サブストリームを論理的に開始する必要がある、ラップされたストリーム内の有効なインデックス。
streamLength - サブストリームの長さ。
lock - 同じ InputStream をラップするサブストリーム インスタンスに対するスレッド セーフな同時実行操作を保証するための組み込みロック。

メソッドの詳細

close

public void close()

サブストリームを閉じます。

getInputStream

public InputStream getInputStream()

getLength

public long getLength()

mark

public synchronized void mark(int readlimit)

サブストリーム内の現在位置をマークします。 メソッドの後続の呼び出しは、ストリームをこの格納位置に再配置します。

Parameters:

readlimit - マーク位置が無効になる前に読み取ることができるバイトの最大制限。

markSupported

public boolean markSupported()

サブストリーム ラッパー クラスはマーク可能な入力ストリームとのみ互換性があるため、常に true を返します。 この要件は、クラス コンストラクターで適用されます。

Returns:

true

read

public int read()

ラップされたストリームから次のバイトのデータを読み取ります。 値 byte は、 の範囲内の として返されます。 サブストリームの末尾に達したためにバイトが使用できない場合は、値が返されます。 このメソッドは、入力データが使用可能になるまで、ストリームの末尾が検出されるか、例外がスローされるまでブロックします。

Returns:

データの次のバイト、または -1 サブストリームの末尾に達した場合は 。

Throws:

IOException - I/O エラーが発生した場合は 。

read

public synchronized int read(byte[] b)

ラップされたストリームからバイト数を読み取り、バッファー配列 に格納します。 実際に読み取られたバイト数は整数として返されます。 このメソッドは、入力データが使用可能か、ファイルの終わりが検出されるか、例外がスローされるまでブロックします。

の長さが 0 の場合、バイトは読み取られず、返されます。それ以外の場合は、少なくとも 1 バイトを読み取ろうとします。 サブストリームがファイルの末尾にあるためにバイトが使用できない場合は、値が返されます。それ以外の場合は、少なくとも 1 バイトが読み取られ、 に格納されます。

最初のバイト読み取りは 要素に格納され、次のバイトは に格納されます。 読み取られたバイト数は、最大で の長さと同じです。 k を実際に読み取ったバイト数にします。これらのバイトは k を通じて要素に格納され、要素 k は影響を受けません。

クラスの メソッドは、次と同じ効果を持ちます。

Parameters:

b - データの読み取り先となるバッファー。

Returns:

バッファーに読み込まれた合計バイト数。ストリーム -1 の末尾に達したためにデータが存在しない場合は 。

Throws:

IOException - ファイルの末尾以外の理由で最初のバイトを読み取ることができない場合、ラップされたストリームが閉じている場合、または他の I/O エラーが発生した場合。
NullPointerException - が の場合bnull

read

public synchronized int read(byte[] b, int off, int len)

サブストリームから最大バイトのデータを読み取ります。 スキップと読み取りのオーバーヘッドを最小限に抑えるために、ラップされたストリームからデータをバッファーします。 ラップされたストリームは、readBuffer が読み取り要求を満たすことができない場合にのみ呼び出されます。 有効な結果を確保するには、ラップされたストリームをサブストリームから読み取る前にマークする必要があります。 これにより、ラップされたストリーム内の相対サブストリーム位置にリセットできます。 実際に読み取られたバイト数は整数として返されます。 これらの操作はすべて組み込みロック内で同期的に実行され、サブストリーム インスタンスによる他の同時要求が競合状態にならないようにします。

ラップされたストリームの読み取りの基になる呼び出しは、入力データが使用可能になるまで、ファイルの終わりが検出されるか、例外がスローされるまでブロックされます。

が 0 の場合、バイトは読み取られず、返されます。それ以外の場合は、少なくとも 1 バイトを読み取ろうとします。 サブストリームがファイルの末尾にあるために使用可能なバイトがない場合は、値が返されます。それ以外の場合は、少なくとも 1 バイトが 読み取られ、 に格納されます。

Parameters:

b - データの読み取り先となるバッファー。
off - データが書き込まれる配列 b 内の開始オフセット。
len - 読み取る最大バイト数。

Returns:

バッファーに読み込まれたバイトの合計数。ストリーム -1 の末尾に達したためにデータがそれ以上ない場合は 。

Throws:

IOException - ファイルの終わり以外の理由で最初のバイトを読み取ることができない場合、またはラップされたストリームが閉じられている場合、または他の I/O エラーが発生した場合。
NullPointerException - bnull の場合。
IndexOutOfBoundsException - が負の値、len負の値、または len より大きい場合offb.length - off

reset

public synchronized void reset()

サブストリームの位置を、メソッドが最後に呼び出されたインデックスに位置を変更します。

サブストリームの新しいリセット位置は、後続の読み取りまで有効になりません。

skip

public long skip(long n)

によってサブストリームの現在位置を進めます。 メソッドは、ラップされたストリーム クラスの基になるメソッドを呼び出しません。 バイトの実際のスキップは、後続のサブストリーム読み取り操作中に考慮されます。

Parameters:

n - 効果的にスキップされるバイト数。

Returns:

スキップされた実際のバイト数。

適用対象