インターフェース DataBuffer
- すべての既知のサブインターフェース:
CloseableDataBuffer
、PooledDataBuffer
、TouchableDataBuffer
DataBuffer
は、ByteBuffer
の単一の位置とは対照的に、別個の読み取り位置と書き込み位置を持っています。そのため、DataBuffer
は、書き込み後に読み取るためにフリップを必要としません。一般に、読み取り位置と書き込み位置、および容量については、次の不変条件が当てはまります。
0
<=
readPosition<=
writePosition<=
容量
DataBuffer
の容量は、StringBuilder
と同様にオンデマンドで拡張されます。
DataBuffer
抽象化の主な目的は、Netty の ByteBuf
に似ていますが、非 Netty プラットフォーム(つまり、サーブレットコンテナー)でも使用できる ByteBuffer
SE の便利なラッパーを提供することです。
- 導入:
- 5.0
- 作成者:
- Arjen Poutsma, Brian Clozel
- 関連事項:
ネストされたクラスのサマリー
メソッドのサマリー
修飾子と型メソッド説明使用すべきではありません。asByteBuffer
(int index, int length) 使用すべきではありません。6.0 の時点で、toByteBuffer(int, ByteBuffer, int, int)
、readableByteBuffers()
、またはwritableByteBuffers()
が優先されます。default InputStreamSE
このバッファのデータをInputStream
SE として公開します。default InputStreamSE
asInputStream
(boolean releaseOnClose) このバッファのデータをInputStream
SE として公開します。default OutputStreamSE
このバッファのデータをOutputStream
SE として公開します。int
capacity()
このバッファに含めることができるバイト数を返します。capacity
(int capacity) 使用すべきではありません。6.0 の時点で、異なるセマンティクスを持つensureWritable(int)
を優先default DataBuffer
ensureCapacity
(int capacity) 使用すべきではありません。6.0 以降、ensureWritable(int)
を推奨ensureWritable
(int capacity) 現在のバッファーに、引数として指定されたデータ量を書き込むのに十分なwritableByteCount()
があることを確認してください。factory()
このバッファーを作成したDataBufferFactory
を返します。byte
getByte
(int index) このデータバッファから指定されたインデックスで 1 バイトを読み取ります。int
indexOf
(IntPredicateSE predicate, int fromIndex) 指定された述語に一致するこのバッファーの最初のバイトのインデックスを返します。int
lastIndexOf
(IntPredicateSE predicate, int fromIndex) 指定された述語に一致するこのバッファの最後のバイトのインデックスを返します。byte
read()
このデータバッファーから現在の読み取り位置から 1 バイトを読み取ります。read
(byte[] destination) このバッファの現在の読み取り位置から開始して、指定された宛先にこのバッファのデータを読み取ります。read
(byte[] destination, int offset, int length) このバッファーの現在の読み取り位置から開始して、指定された宛先にこのバッファーの最大length
バイトを読み取ります。このデータバッファー内の読み取り可能な各ByteBuffer
SE に対して、クローズ可能な反復子を返します。int
このデータバッファーから読み取ることができるバイト数を返します。int
このバッファが読み込む位置を返します。readPosition
(int readPosition) このバッファが読み込む位置を設定します。default DataBuffer
retainedSlice
(int index, int length) 使用すべきではありません。6.0 の時点で、異なるセマンティクスを持つsplit(int)
を優先slice
(int index, int length) 使用すべきではありません。6.0 の時点で、異なるセマンティクスを持つsplit(int)
を優先split
(int index) このデータバッファーを指定されたインデックスで 2 つに分割します。default ByteBufferSE
使用すべきではありません。6.0.5 現在、toByteBuffer(ByteBuffer)
を推奨toByteBuffer
(int index, int length) 使用すべきではありません。6.0.5 現在、toByteBuffer(int, ByteBuffer, int, int)
を推奨void
toByteBuffer
(int srcPos, ByteBufferSE dest, int destPos, int length) 指定された長さをこのデータバッファーから指定された宛先ByteBuffer
に、指定されたソース位置と宛先バイトバッファー内の指定された宛先位置からコピーします。default void
toByteBuffer
(ByteBufferSE dest) 指定された文字セットを使用して、このバッファのデータの一部を文字列として返します。default StringSE
指定された文字セットを使用して、このバッファのデータを文字列で返します。このデータバッファー内の書き込み可能な各ByteBuffer
SE に対して、クローズ可能な反復子を返します。int
このデータバッファに書き込むことができるバイト数を返します。write
(byte b) このバッファの現在の書き込み位置に 1 バイトを書き込みます。write
(byte[] source) このバッファの現在の書き込み位置から開始して、指定されたソースをこのバッファに書き込みます。write
(byte[] source, int offset, int length) このバッファの現在の書き込み位置から開始して、指定されたソースの最大length
バイトをこのバッファに書き込みます。default DataBuffer
write
(CharSequenceSE charSequence, CharsetSE charset) 現在の書き込み位置から、指定されたCharset
を使用して、指定されたCharSequence
を書き込みます。write
(ByteBufferSE... buffers) 現在の書き込み位置から開始して、このバッファーに 1 つ以上のByteBuffer
SE を書き込みます。write
(DataBuffer... buffers) 現在の書き込み位置から開始して、このバッファーに 1 つ以上のDataBuffer
を書き込みます。int
このバッファが書き込む位置を返します。writePosition
(int writePosition) このバッファが書き込む位置を設定します。
メソッドの詳細
factory
DataBufferFactory factory()このバッファーを作成したDataBufferFactory
を返します。- 戻り値:
- 作成バッファーファクトリ
indexOf
指定された述語に一致するこのバッファーの最初のバイトのインデックスを返します。- パラメーター:
predicate
- 一致する述語fromIndex
- 検索を開始するインデックス- 戻り値:
predicate
に一致する最初のバイトのインデックス。または、一致するものがない場合は-1
lastIndexOf
指定された述語に一致するこのバッファの最後のバイトのインデックスを返します。- パラメーター:
predicate
- 一致する述語fromIndex
- 検索を開始するインデックス- 戻り値:
predicate
に一致する最後のバイトのインデックス。または、一致するものがない場合は-1
readableByteCount
int readableByteCount()このデータバッファーから読み取ることができるバイト数を返します。- 戻り値:
- 読み取り可能なバイト数
writableByteCount
int writableByteCount()このデータバッファに書き込むことができるバイト数を返します。- 戻り値:
- 書き込み可能なバイト数
- 導入:
- 5.0.1
capacity
int capacity()このバッファに含めることができるバイト数を返します。- 戻り値:
- 容量
- 導入:
- 5.0.1
capacity
使用すべきではありません。6.0 の時点で、異なるセマンティクスを持つensureWritable(int)
を優先このバッファに含めることができるバイト数を設定します。新しい容量が現在の容量よりも少ない場合、このバッファの内容は切り捨てられます。新しい容量が現在の容量よりも大きい場合、拡張されます。
- パラメーター:
capacity
- 新しい容量- 戻り値:
- このバッファ
ensureCapacity
使用すべきではありません。6.0 以降、ensureWritable(int)
を推奨現在のバッファーに、引数として指定されたデータ量を書き込むのに十分なwritableByteCount()
があることを確認してください。そうでない場合、不足している容量がバッファに追加されます。- パラメーター:
capacity
- チェックする書き込み可能な容量- 戻り値:
- このバッファ
- 導入:
- 5.1.4
ensureWritable
現在のバッファーに、引数として指定されたデータ量を書き込むのに十分なwritableByteCount()
があることを確認してください。そうでない場合、不足している容量がバッファに追加されます。- パラメーター:
capacity
- チェックする書き込み可能な容量- 戻り値:
- このバッファ
- 導入:
- 6.0
readPosition
int readPosition()このバッファが読み込む位置を返します。- 戻り値:
- 読み取り位置
- 導入:
- 5.0.1
readPosition
このバッファが読み込む位置を設定します。- パラメーター:
readPosition
- 新しい読み取り位置- 戻り値:
- このバッファ
- 例外:
IndexOutOfBoundsExceptionSE
-readPosition
が 0 より小さいか、writePosition()
より大きい場合- 導入:
- 5.0.1
writePosition
int writePosition()このバッファが書き込む位置を返します。- 戻り値:
- 書き込み位置
- 導入:
- 5.0.1
writePosition
このバッファが書き込む位置を設定します。- パラメーター:
writePosition
- 新しい書き込み位置- 戻り値:
- このバッファ
- 例外:
IndexOutOfBoundsExceptionSE
-writePosition
がreadPosition()
より小さいか、capacity()
より大きい場合- 導入:
- 5.0.1
getByte
byte getByte(int index) このデータバッファから指定されたインデックスで 1 バイトを読み取ります。- パラメーター:
index
- バイトが読み取られるインデックス- 戻り値:
- 指定されたインデックスのバイト
- 例外:
IndexOutOfBoundsExceptionSE
-index
が範囲外の場合- 導入:
- 5.0.4
read
byte read()このデータバッファーから現在の読み取り位置から 1 バイトを読み取ります。- 戻り値:
- このバッファーの現在の読み取り位置のバイト
read
このバッファの現在の読み取り位置から開始して、指定された宛先にこのバッファのデータを読み取ります。- パラメーター:
destination
- バイトが書き込まれる配列- 戻り値:
- このバッファ
read
このバッファーの現在の読み取り位置から開始して、指定された宛先にこのバッファーの最大length
バイトを読み取ります。- パラメーター:
destination
- バイトが書き込まれる配列offset
- 書き込まれる最初のバイトのdestination
内のインデックスlength
-destination
に書き込まれる最大バイト数- 戻り値:
- このバッファ
write
このバッファの現在の書き込み位置に 1 バイトを書き込みます。- パラメーター:
b
- 書き込まれるバイト- 戻り値:
- このバッファ
write
このバッファの現在の書き込み位置から開始して、指定されたソースをこのバッファに書き込みます。- パラメーター:
source
- このバッファーに書き込まれるバイト- 戻り値:
- このバッファ
write
このバッファの現在の書き込み位置から開始して、指定されたソースの最大length
バイトをこのバッファに書き込みます。- パラメーター:
source
- このバッファーに書き込まれるバイトoffset
- 書き込みを開始するsource
内のインデックスlength
-source
から書き込まれる最大バイト数- 戻り値:
- このバッファ
write
現在の書き込み位置から開始して、このバッファーに 1 つ以上のDataBuffer
を書き込みます。与えられたデータバッファを解放するのは呼び出し側の責任です。- パラメーター:
buffers
- このバッファーに書き込むバイトバッファー- 戻り値:
- このバッファ
write
現在の書き込み位置から開始して、このバッファーに 1 つ以上のByteBuffer
SE を書き込みます。- パラメーター:
buffers
- このバッファーに書き込むバイトバッファー- 戻り値:
- このバッファ
write
現在の書き込み位置から、指定されたCharset
を使用して、指定されたCharSequence
を書き込みます。- パラメーター:
charSequence
- このバッファーに書き込む文字シーケンスcharset
- 文字シーケンスをエンコードする文字セット- 戻り値:
- このバッファ
- 導入:
- 5.1.4
slice
使用すべきではありません。6.0 の時点で、異なるセマンティクスを持つsplit(int)
を優先このデータバッファのコンテンツの共有サブシーケンスをコンテンツとする新しいDataBuffer
を作成します。このデータバッファーと返されたバッファー間のデータは共有されます。ただし、返されたバッファーの位置の変更は、このデータバッファーの読み取りまたは書き込みの位置には反映されません。このメソッドは結果のスライスで
DataBufferUtils.retain(DataBuffer)
を呼び出さないことに注意してください。参照カウントは増加しません。- パラメーター:
index
- スライスを開始するインデックスlength
- スライスの長さ- 戻り値:
- このデータバッファの指定されたスライス
retainedSlice
使用すべきではありません。6.0 の時点で、異なるセマンティクスを持つsplit(int)
を優先内容がこのデータバッファの内容の共有された保持されたサブシーケンスである新しいDataBuffer
を作成します。このデータバッファーと返されたバッファー間のデータは共有されます。ただし、返されたバッファーの位置の変更は、このデータバッファーの読み取りまたは書き込みの位置には反映されません。slice(int, int)
とは異なり、このメソッド は結果のスライスでDataBufferUtils.retain(DataBuffer)
(または同等のもの) を 呼び出すことに注意してください。- パラメーター:
index
- スライスを開始するインデックスlength
- スライスの長さ- 戻り値:
- このデータバッファーの指定された保持スライス
- 導入:
- 5.2
split
このデータバッファーを指定されたインデックスで 2 つに分割します。index
の前のデータは新しいバッファに返されますが、このバッファにはindex
の後に続くデータが含まれます。2 つのバッファー間のメモリは共有されますが、独立しており、重複することはありません (slice
とは異なります)。返されたバッファーの読み取り位置と書き込み位置は、必要に応じてバッファーの容量に収まるように切り捨てられます。このバッファーの位置は、
index
より小さい場合は0
に設定されます。- パラメーター:
index
- 分割するインデックス- 戻り値:
- インデックス
0
からindex
までのバイトを含む新しいデータバッファ - 導入:
- 6.0
asByteBuffer
使用すべきではありません。このバッファのバイトをByteBuffer
SE として公開します。このDataBuffer
と返されたByteBuffer
の間のデータは共有されます。ただし、返されたバッファの位置の変更は、このデータバッファの読み取りまたは書き込みの位置には反映されません。- 戻り値:
- バイトバッファとしてのこのデータバッファ
asByteBuffer
使用すべきではありません。6.0 の時点で、toByteBuffer(int, ByteBuffer, int, int)
、readableByteBuffers()
、またはwritableByteBuffers()
が優先されます。このバッファのバイトのサブシーケンスをByteBuffer
SE として公開します。このDataBuffer
と返されたByteBuffer
の間のデータは共有されます。ただし、返されたバッファの位置の変更は、このデータバッファの読み取りまたは書き込みの位置には反映されません。- パラメーター:
index
- バイトバッファを開始するインデックスlength
- 返されるバイトバッファーの長さ- 戻り値:
- バイトバッファとしてのこのデータバッファ
- 導入:
- 5.0.1
toByteBuffer
使用すべきではありません。6.0.5 現在、toByteBuffer(ByteBuffer)
を推奨- 戻り値:
- バイトバッファとしてのこのデータバッファ
- 導入:
- 6.0
- 関連事項:
toByteBuffer
使用すべきではありません。6.0.5 現在、toByteBuffer(int, ByteBuffer, int, int)
を推奨- 戻り値:
- バイトバッファとしてのこのデータバッファ
- 導入:
- 6.0
- 関連事項:
toByteBuffer
- パラメーター:
dest
- 宛先バイトバッファ- 導入:
- 6.0.5
toByteBuffer
指定された長さをこのデータバッファーから指定された宛先ByteBuffer
に、指定されたソース位置と宛先バイトバッファー内の指定された宛先位置からコピーします。- パラメーター:
srcPos
- コピーを開始するこのデータバッファーの位置dest
- 宛先バイトバッファdestPos
- コピーを開始するdest
内の位置length
- コピーするデータの量- 導入:
- 6.0.5
readableByteBuffers
DataBuffer.ByteBufferIterator readableByteBuffers()このデータバッファー内の読み取り可能な各ByteBuffer
SE に対して、クローズ可能な反復子を返します。データがコピーされないため、このメソッドを呼び出す方がtoByteBuffer()
よりも効率的です。ただし、提供されたバイトバッファーは反復中にのみ使用できます。返された反復子は、try-with-resources 句で使用するか、明示的に closed にする必要があることに注意してください。
- 戻り値:
- このデータバッファに含まれる読み取り可能なバイトバッファに対するクローズ可能なイテレータ
- 導入:
- 6.0.5
writableByteBuffers
DataBuffer.ByteBufferIterator writableByteBuffers()このデータバッファー内の書き込み可能な各ByteBuffer
SE に対して、クローズ可能な反復子を返します。提供されたバイトバッファーは、反復中にのみ使用できます。返された反復子は、try-with-resources 句で使用するか、明示的に closed にする必要があることに注意してください。
- 戻り値:
- このデータバッファに含まれる書き込み可能なバイトバッファに対するクローズ可能なイテレータ
- 導入:
- 6.0.5
asInputStream
このバッファのデータをInputStream
SE として公開します。データと読み取り位置の両方が、返されたストリームとこのデータバッファの間で共有されます。入力ストリームが閉じられると、基になるバッファは解放されません。- 戻り値:
- 入力ストリームとしてのこのデータバッファ
- 関連事項:
asInputStream
このバッファのデータをInputStream
SE として公開します。データと読み取り位置の両方が、返されたストリームとこのデータバッファーの間で共有されます。asOutputStream
このバッファのデータをOutputStream
SE として公開します。データと書き込み位置の両方が、返されたストリームとこのデータバッファーの間で共有されます。- 戻り値:
- 出力ストリームとしてのこのデータバッファ
toString
指定された文字セットを使用して、このバッファのデータを文字列で返します。デフォルトの実装はtoString(readPosition(), readableByteCount(), charset)
に委譲します。- パラメーター:
charset
- 使用する文字セット- 戻り値:
- このすべてのバッファデータの文字列表現
- 導入:
- 5.2
toString
指定された文字セットを使用して、このバッファのデータの一部を文字列として返します。- パラメーター:
index
- 文字列を開始するインデックスlength
- 文字列に使用するバイト数charset
- 使用する文字セット- 戻り値:
- このバッファデータの一部の文字列表現
- 導入:
- 5.2
toByteBuffer(ByteBuffer)
、readableByteBuffers()
、またはwritableByteBuffers()
が優先されます。