JavaTM Platform
Standard Ed. 6

java.nio
クラス ByteBuffer

java.lang.Object
  上位を拡張 java.nio.Buffer
      上位を拡張 java.nio.ByteBuffer
すべての実装されたインタフェース:
Comparable<ByteBuffer>
直系の既知のサブクラス:
MappedByteBuffer

public abstract class ByteBuffer
extends Buffer
implements Comparable<ByteBuffer>

byte バッファーです。

このクラスは、byte バッファーに対する操作を次の 6 つのカテゴリに分類します。

byte バッファーを作成するには、バッファーのコンテンツに容量を割り当てる割り当て操作を実行するか、 既存のバイト配列をバッファーにラップします。

ダイレクトバッファーと非ダイレクトバッファー

byte バッファーには、「ダイレクト」バッファーと「非ダイレクト」バッファーがあります。ダイレクト byte バッファーの場合、Java 仮想マシンは、ネイティブの入出力操作を直接実行しようとします。これは、基本となるオペレーティングシステム固有の入出力操作を呼び出す際、中間バッファーを介さないということです。

ダイレクト byte バッファーは、このクラスのファクトリメソッド allocateDirect を呼び出すと作成されます。通常は、こちらのバッファーのほうが、非ダイレクトバッファーよりも割り当ておよび解放コストがやや高くなります。ダイレクトバッファーの内容が標準のガベージコレクトされたヒープの外部にあるなら、アプリケーションのメモリーフットプリントに対する影響はわずかです。このことから、ダイレクトバッファーには、基本となるシステム固有の入出力操作に従属する、寿命が長く容量の大きいバッファーを指定することをお勧めします。一般に、ダイレクトバッファーの割り当ては、プログラムの性能を十分に改善できる見込みがある場合にのみ行うべきです。

ダイレクト byte バッファーは、ファイルの特定の領域をメモリーに直接マッピングする方法でも作成できます。Java プラットフォームの実装によっては、JNI を介してネイティブコードからダイレクト byte バッファーを生成する機能がオプションでサポートされている可能性があります。こうした種類のバッファーのインスタンスが、メモリー内のアクセスできない領域を参照した場合、その領域にアクセスしようとしてもバッファーのコンテンツは変更されず、アクセス時またはアクセス後に何らかの例外がスローされます。

特定の byte バッファーがダイレクトバッファー、非ダイレクトバッファーのどちらであるかを判断するには、isDirect メソッドを呼び出します。このメソッドを使用すると、性能が重視されるコード内で明示的にバッファー管理を行えます。

バイナリデータへのアクセス

このクラスには、その他のすべてのプリミティブ型 (boolean を除く) の値の読み込みと書き込みを行うメソッドが定義されています。プリミティブ値とバイトシーケンスとの相互変換は、バッファーの現在のバイト順序に従って行われます。 バイト順序を取得および変更するには、order メソッドを使用します。特定のバイト順序は、ByteOrder クラスのインスタンスで表されます。byte バッファーの初期順序は、常に BIG_ENDIAN です。

異種バイナリデータ、すなわち型の異なる値のシーケンスにアクセスできるようにするため、このクラスは、型ごとに一連の絶対および相対 get/put メソッドのファミリを定義します。たとえば、32 ビットの浮動小数点数 (float 値) の場合、次のメソッドが定義されます。

 float  getFloat()
 float  getFloat(int index)
  void  putFloat(float f)
  void  putFloat(int index, float f)

charshortintlongdouble の各型にも、同様のメソッドが定義されています。絶対 get/put メソッドのインデックスパラメータの単位は、読み込みまたは書き込みの対象となる型ではなく、バイトです。

同種のバイナリデータ、すなわち同じ型の値のシーケンスにアクセスできるようにするため、このクラスには、指定された byte バッファーの「ビュー」を作成するメソッドが定義されています。「ビューバッファー」とは、byte バッファーに連動した内容を持つ、別のバッファーのことです。byte バッファーの内容に変更を加えると、ビューバッファーにもその内容が反映されます。 反対に、ビューバッファーの内容に変更を加えると、byte バッファーにもその内容が反映されます。 この 2 つのバッファーの位置、リミット、マークの値は、それぞれ独立しています。たとえば、asFloatBuffer メソッドは、このメソッドの呼び出し元の byte バッファーに連動した FloatBuffer クラスのインスタンスを生成します。charshortintlongdouble の各型に対しても、同様のビュー作成メソッドが定義されています。

ビューバッファーには、前述した一連の型固有の get/put メソッドに勝る重要な利点が 3 つあります。

ビューバッファーのバイト順序は、ビューの生成時に byte バッファーと同じものに固定されます。

呼び出しの連鎖

このクラスのメソッドのうち戻り値を返さないものは、自身を呼び出したバッファーの情報を返します。これを応用して、メソッド呼び出しを連鎖させることができます。 たとえば、次のような連続した文があるとしましょう。

 bb.putInt(0xCAFEBABE);
 bb.putShort(3);
 bb.putShort(45);
これらは、次の一文で置き換えられます。
 bb.putInt(0xCAFEBABE).putShort(3).putShort(45);

導入されたバージョン:
1.4

メソッドの概要
static ByteBuffer allocate(int capacity)
          新しい byte バッファーを割り当てます。
static ByteBuffer allocateDirect(int capacity)
          新しいダイレクト byte バッファーを割り当てます。
 byte[] array()
          このバッファーを補助するバイト配列を返します (任意操作)。
 int arrayOffset()
          現在のバッファーの補助配列内にある、このバッファーの最初の要素のオフセットを返します (オプション)。
abstract  CharBuffer asCharBuffer()
          文字バッファーとしてこの byte バッファーのビューを作成します。
abstract  DoubleBuffer asDoubleBuffer()
          double バッファーとしてこの byte バッファーのビューを作成します。
abstract  FloatBuffer asFloatBuffer()
          float バッファーとしてこの byte バッファーのビューを作成します。
abstract  IntBuffer asIntBuffer()
          int バッファーとしてこの byte バッファーのビューを作成します。
abstract  LongBuffer asLongBuffer()
          long バッファーとしてこの byte バッファーのビューを作成します。
abstract  ByteBuffer asReadOnlyBuffer()
          このバッファーの内容を共有する新しい読み込み専用 byte バッファーを作成します。
abstract  ShortBuffer asShortBuffer()
          short バッファーとしてこの byte バッファーのビューを作成します。
abstract  ByteBuffer compact()
          現在のバッファーを圧縮します (オプション)。
 int compareTo(ByteBuffer that)
          現在のバッファーを別のバッファーと比較します。
abstract  ByteBuffer duplicate()
          このバッファーの内容を共有する新しい byte バッファーを作成します。
 boolean equals(Object ob)
          現在のバッファーが別のオブジェクトと等価であるかどうかを判断します。
abstract  byte get()
          相対「get」メソッドです。
 ByteBuffer get(byte[] dst)
          相対一括「get」メソッドです。
 ByteBuffer get(byte[] dst, int offset, int length)
          相対一括「get」メソッドです。
abstract  byte get(int index)
          絶対「get」メソッドです。
abstract  char getChar()
          char 値を読み取る相対「get」メソッドです。
abstract  char getChar(int index)
          char 値を読み取る絶対「get」メソッドです。
abstract  double getDouble()
          double 値を読み取る相対「get」メソッドです。
abstract  double getDouble(int index)
          double 値を読み取る絶対「get」メソッドです。
abstract  float getFloat()
          float 値を読み取る相対「get」メソッドです。
abstract  float getFloat(int index)
          float 値を読み取る絶対「get」メソッドです。
abstract  int getInt()
          int 値を読み取る相対「get」メソッドです。
abstract  int getInt(int index)
          int 値を読み取る絶対「get」メソッドです。
abstract  long getLong()
          long 値を読み取る相対「get」メソッドです。
abstract  long getLong(int index)
          long 値を読み取る絶対「get」メソッドです。
abstract  short getShort()
          short 値を読み取る相対「get」メソッドです。
abstract  short getShort(int index)
          short 値を読み取る絶対「get」メソッドです。
 boolean hasArray()
          このバッファーがアクセス可能なバイト配列に連動するかどうかを判断します。
 int hashCode()
          現在のバッファーの現在のハッシュコードを返します。
abstract  boolean isDirect()
          この byte バッファーがダイレクトバッファーであるかどうかを判断します。
 ByteOrder order()
          現在のバッファーのバイト順序を取得します。
 ByteBuffer order(ByteOrder bo)
          このバッファーのバイト順序を変更します。
abstract  ByteBuffer put(byte b)
          相対「put」メソッドです (オプション)。
 ByteBuffer put(byte[] src)
          相対一括「put」メソッドです (オプション)。
 ByteBuffer put(byte[] src, int offset, int length)
          相対一括「put」メソッドです (オプション)。
 ByteBuffer put(ByteBuffer src)
          相対一括「put」メソッドです (オプション)。
abstract  ByteBuffer put(int index, byte b)
          絶対「put」メソッドです (オプション)。
abstract  ByteBuffer putChar(char value)
          char 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putChar(int index, char value)
          char 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putDouble(double value)
          double 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putDouble(int index, double value)
          double 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putFloat(float value)
          float 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putFloat(int index, float value)
          float 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putInt(int value)
          int 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putInt(int index, int value)
          int 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putLong(int index, long value)
          long 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putLong(long value)
          long 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer putShort(int index, short value)
          short 値を書き込む絶対「put」メソッドです (任意操作)。
abstract  ByteBuffer putShort(short value)
          short 値を書き込む相対「put」メソッドです (任意操作)。
abstract  ByteBuffer slice()
          このバッファーの共有のサブシーケンスを内容とする新しい byte バッファーを作成します。
 String toString()
          このバッファーの状態を要約した文字列を返します。
static ByteBuffer wrap(byte[] array)
          バイト配列をバッファーにラップします。
static ByteBuffer wrap(byte[] array, int offset, int length)
          バイト配列をバッファーにラップします。
 
クラス java.nio.Buffer から継承されたメソッド
capacity, clear, flip, hasRemaining, isReadOnly, limit, limit, mark, position, position, remaining, reset, rewind
 
クラス java.lang.Object から継承されたメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

メソッドの詳細

allocateDirect

public static ByteBuffer allocateDirect(int capacity)
新しいダイレクト byte バッファーを割り当てます。

新しいバッファーの位置は 0、リミットは容量と同じ値になります。 マークは定義されません。補助配列を利用するかどうかは指定されません。

パラメータ:
capacity - 新しいバッファーの容量 (バイト)
戻り値:
新しい byte バッファー
例外:
IllegalArgumentException - capacity が負の整数である場合

allocate

public static ByteBuffer allocate(int capacity)
新しい byte バッファーを割り当てます。

新しいバッファーの位置は 0、リミットは容量と同じ値になります。 マークは定義されません。このバッファーは補助配列を利用し、その配列オフセットは 0 になります。

パラメータ:
capacity - 新しいバッファーの容量 (バイト)
戻り値:
新しい byte バッファー
例外:
IllegalArgumentException - capacity が負の整数である場合

wrap

public static ByteBuffer wrap(byte[] array,
                              int offset,
                              int length)
バイト配列をバッファーにラップします。

新しいバッファーは指定されたバイト配列によって補助されます。 バッファーに変更を加えると配列も変更され、配列に変更を加えるとバッファーも変更されます。新しいバッファーの容量は array.length、位置は offset、リミットは offset + length になります。 マークは定義されません。指定された配列が補助配列となり、その配列オフセットは 0 になります。

パラメータ:
array - 新しいバッファーを補助する配列
offset - 使用するサブ配列のオフセット。array.length 以下の負でない値でなければならない。 新しいバッファーの位置は、この値に設定される
length - 使用するサブ配列のオフセット。 array.length - offset 以下の負でない値でなければならない。 新しいバッファーのリミットは、offset + length に設定される
戻り値:
新しい byte バッファー
例外:
IndexOutOfBoundsException - offset パラメータと length パラメータの前提条件が満たされていない場合

wrap

public static ByteBuffer wrap(byte[] array)
バイト配列をバッファーにラップします。

新しいバッファーは指定されたバイト配列によって補助されます。 バッファーに変更を加えると配列も変更され、配列に変更を加えるとバッファーも変更されます。新しいバッファーの容量とリミットは array.length、位置は 0 になります。 マークは定義されません。指定された配列が補助配列となり、その配列オフセットは 0 になります。

パラメータ:
array - 現在のバッファーを補助する配列
戻り値:
新しい byte バッファー

slice

public abstract ByteBuffer slice()
このバッファーの共有のサブシーケンスを内容とする新しい byte バッファーを作成します。

新しいバッファーのコンテンツは、現在のバッファーの現在位置から始まります。現在のバッファーのコンテンツに変更を加えると、その内容が新しいバッファーに反映されます。 新しいバッファーのコンテンツに変更を加えると、その内容が現在のバッファーに反映されます。 2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファーの位置は 0、容量とリミットはこのバッファー内に残っているバイト数になります。 マークは定義されません。新しいバッファーは、現在のバッファーがダイレクトバッファーである場合に限りダイレクトバッファーになります。 また、現在のバッファーが読み取り専用バッファーである場合に限り読み取り専用バッファーになります。

戻り値:
新しい byte バッファー

duplicate

public abstract ByteBuffer duplicate()
このバッファーの内容を共有する新しい byte バッファーを作成します。

新しいバッファーのコンテンツは、現在のバッファーのコンテンツと同じになります。現在のバッファーのコンテンツに変更を加えると、その内容が新しいバッファーに反映されます。 新しいバッファーのコンテンツに変更を加えると、その内容が現在のバッファーに反映されます。 2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファーの容量、リミット、位置、マークの値は、現在のバッファーの対応する値と同じになります。新しいバッファーは、現在のバッファーがダイレクトバッファーである場合に限りダイレクトバッファーになります。 また、現在のバッファーが読み取り専用バッファーである場合に限り読み取り専用バッファーになります。

戻り値:
新しい byte バッファー

asReadOnlyBuffer

public abstract ByteBuffer asReadOnlyBuffer()
このバッファーの内容を共有する新しい読み込み専用 byte バッファーを作成します。

新しいバッファーのコンテンツは、現在のバッファーのコンテンツと同じになります。現在のバッファーのコンテンツに変更を加えると、その内容が新しいバッファーに反映されます。 しかし、新しいバッファー自体は読み取り専用であり、その共有コンテンツを変更することはできません。2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファーの容量、リミット、位置、マークの値は、現在のバッファーの対応する値と同じになります。

現在のバッファーが読み取り専用の場合、このメソッドの動作は duplicate メソッドとまったく同じになります。

戻り値:
新しい読み込み専用 byte バッファー

get

public abstract byte get()
相対「get」メソッドです。このバッファーの現在位置からバイトを読み込み、現在位置の値を増加します。

戻り値:
バッファーの現在位置のバイト
例外:
BufferUnderflowException - バッファーの現在位置がリミット以上である場合

put

public abstract ByteBuffer put(byte b)
相対「put」メソッドです (オプション)。

バッファーの現在位置に指定されたバイトを書き込み、現在位置の値を増加します。

パラメータ:
b - 書き込まれるバイト
戻り値:
現在のバッファー
例外:
BufferOverflowException - 現在のバッファーの現在位置がリミット以上である場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

get

public abstract byte get(int index)
絶対「get」メソッドです。指定されたインデックス位置のバイトを読み込みます。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置のバイト
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファーのリミット以上である場合

put

public abstract ByteBuffer put(int index,
                               byte b)
絶対「put」メソッドです (オプション)。

このバッファーの指定されたインデックス位置に指定されたバイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
b - 書き込まれるバイト値
戻り値:
現在のバッファー
例外:
IndexOutOfBoundsException - index が負の数である場合、またはバッファーのリミット以上である場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

get

public ByteBuffer get(byte[] dst,
                      int offset,
                      int length)
相対一括「get」メソッドです。

このメソッドは、このバッファーから指定された配列へバイトを転送します。このバッファー内に残っているバイト数が要求に満たない場合 (つまり、length > remaining() である場合)、バイトは一切転送されず、BufferUnderflowException がスローされます。

それ以外の場合、このメソッドは、このバッファーの現在位置から length バイトを指定された配列の指定されたオフセット位置へコピーします。そのたびに、現在のバッファーの位置が length ずつ増加します。

このメソッドを src.get(dst, off, len) の形式で呼び出すと、以下のループとまったく同じ結果になります。

for (int i = off; i < off + len; i++)
dst[i] = src.get(); 
ただし、このバッファー内に十分な数の byte 数があることを最初に確認する動作は除きます。 また、このメソッドを使用したほうがループよりもはるかに効率的です。

パラメータ:
dst - バイトの書き込み先となる配列
offset - 最初のバイトの書き込み先となる配列内のオフセット。 dst.length 以下の負でない値でなければならない
length - 指定された配列に書き込まれる最大バイト数。 dst.length - offset 以下の負でない値でなければならない
戻り値:
現在のバッファー
例外:
BufferUnderflowException - このバッファー内に残っているバイト数が length よりも少ない場合
IndexOutOfBoundsException - offset パラメータと length パラメータの前提条件が満たされていない場合

get

public ByteBuffer get(byte[] dst)
相対一括「get」メソッドです。

このメソッドは、このバッファーから指定された配列へバイトを転送します。このメソッドを src.get(a) の形式で呼び出すと、以下の呼び出しと同じ結果になります。

src.get(a, 0, a.length) 

戻り値:
現在のバッファー
例外:
BufferUnderflowException - このバッファー内に残っているバイト数が length よりも少ない場合

put

public ByteBuffer put(ByteBuffer src)
相対一括「put」メソッドです (オプション)。

このメソッドは、指定されたソースバッファー内に残っているバイトをこのバッファーへ転送します。ソースバッファー内に残っているバイト数がこのバッファー内に残っているバイト数よりも多い場合 (つまり、src.remaining() > remaining() である場合)、バイトは一切転送されず、BufferOverflowException がスローされます。

それ以外の場合、このメソッドは、指定されたバッファーの現在位置からこのバッファーの現在位置へ n = src.remaining() バイトをコピーします。そのたびに、両方のバッファーの位置が n ずつ増加します。

このメソッドを dst.put(src) の形式で呼び出すと、以下のループとまったく同じ結果になります。

while (src.hasRemaining())
dst.put(src.get()); 
ただし、現在のバッファー内に十分な容量があることを最初に確認する動作は、このメソッドに固有です。 また、このメソッドのほうがループよりもずっと効率的です。

パラメータ:
src - バイトの読み込み先となるソースバッファー (このバッファー以外)
戻り値:
現在のバッファー
例外:
BufferOverflowException - ソースバッファー内に残っているバイト数に対して、 このバッファー内の容量が不足している場合
IllegalArgumentException - ソースバッファーとして現在のバッファーを指定した場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

put

public ByteBuffer put(byte[] src,
                      int offset,
                      int length)
相対一括「put」メソッドです (オプション)。

このメソッドは、指定されたソース配列からこのバッファーへバイトを転送します。配列からコピーするバイト数がこのバッファー内に残っているバイト数より多い場合 (つまり、length > remaining() である場合)、バイトは一切転送されず、BufferOverflowException がスローされます。

それ以外の場合、このメソッドは、指定された配列の指定されたオフセット位置からこのバッファーの現在位置へ length 分バイトをコピーします。そのたびに、現在のバッファーの位置が length ずつ増加します。

このメソッドを dst.put(src, off, len) の形式で呼び出すと、以下のループとまったく同じ結果になります。

for (int i = off; i < off + len; i++)
dst.put(a[i]); 
ただし、現在のバッファー内に十分な容量があることを最初に確認する動作は、このメソッドに固有です。 また、このメソッドのほうがループよりもずっと効率的です。

パラメータ:
src - バイトの読み込み先となる配列
offset - 読み込む最初のバイトの配列内のオフセット。 array.length 以下の負でない値でなければならない
length - 与えられた配列から読み込むバイト数。 array.length - offset 以下の負でない値でなければならない
戻り値:
現在のバッファー
例外:
BufferOverflowException - 現在のバッファー内に残っている容量が不足している場合
IndexOutOfBoundsException - offset パラメータと length パラメータの前提条件が満たされていない場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

put

public final ByteBuffer put(byte[] src)
相対一括「put」メソッドです (オプション)。

このメソッドは、ソースとなる指定されたバイト配列の内容全体をこのバッファーへ転送します。このメソッドを dst.put(a) の形式で呼び出すと、以下の呼び出しと同じ結果になります。

dst.put(a, 0, a.length) 

戻り値:
現在のバッファー
例外:
BufferOverflowException - 現在のバッファー内に残っている容量が不足している場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

hasArray

public final boolean hasArray()
このバッファーがアクセス可能なバイト配列に連動するかどうかを判断します。

このメソッドの戻り値が true であれば、array メソッドおよび arrayOffset メソッドを安全に呼び出すことができます。

定義:
クラス Buffer 内の hasArray
戻り値:
現在のバッファーが配列に連動しており、読み込み専用でない場合にかぎり true

array

public final byte[] array()
このバッファーを補助するバイト配列を返します (任意操作)。

現在のバッファーのコンテンツに変更を加えると、返される配列のコンテンツも変更されます。その逆も同様です。

このメソッドを呼び出す前に hasArray メソッドを呼び出し、現在のバッファーがアクセス可能な補助配列を持っていることを確認します。

定義:
クラス Buffer 内の array
戻り値:
現在のバッファーを補助する配列
例外:
ReadOnlyBufferException - 現在のバッファーが配列に連動しており、しかも読み込み専用である場合
UnsupportedOperationException - 現在のバッファーがアクセス可能な配列を利用しない場合

arrayOffset

public final int arrayOffset()
現在のバッファーの補助配列内にある、このバッファーの最初の要素のオフセットを返します (オプション)。

現在のバッファーが配列に連動していれば、その位置 p が配列のインデックス p + arrayOffset() と一致します。

このメソッドを呼び出す前に hasArray メソッドを呼び出し、現在のバッファーがアクセス可能な補助配列を持っていることを確認します。

定義:
クラス Buffer 内の arrayOffset
戻り値:
現在のバッファーの配列内にある、このバッファーの最初の要素のオフセット
例外:
ReadOnlyBufferException - 現在のバッファーが配列に連動しており、しかも読み込み専用である場合
UnsupportedOperationException - 現在のバッファーがアクセス可能な配列を利用しない場合

compact

public abstract ByteBuffer compact()
現在のバッファーを圧縮します (オプション)。

バッファーの現在位置からリミットまでの間にバイトが存在する場合、これらをバッファーの先頭にコピーします。つまり、インデックス位置 p = position() のバイトがインデックス 0 にコピーされ、インデックス位置 p + 1 のバイトがインデックス 1 にコピーされるということです。 インデックス位置 limit() - 1 のバイトがインデックス n = limit() - 1 - p にコピーされるまで、同様の処理が繰り返されます。最終的にバッファーの位置は n+1 に設定され、リミットは容量の値と等しくなります。マークは破棄されます。

バッファーの位置は、0 ではなく、コピーされるバイト数と等しくなります。 したがって、このメソッドを呼び出したあと、すぐに別の相対「put」メソッドを呼び出すことができます。

このメソッドは、書き込みが終了しなかった場合にバッファーからのデータの書き込みを実行する前に呼び出します。以下のループは、バッファー buf を使って、あるチャネルから別のチャネルにバイトをコピーします。

 buf.clear();          // Prepare buffer for use
 while (in.read(buf) >= 0 || buf.position != 0) {
     buf.flip();
     out.write(buf);
     buf.compact();    // In case of partial write
 }

戻り値:
現在のバッファー
例外:
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

isDirect

public abstract boolean isDirect()
この byte バッファーがダイレクトバッファーであるかどうかを判断します。

定義:
クラス Buffer 内の isDirect
戻り値:
現在のバッファーがダイレクトバッファーである場合にかぎり true

toString

public String toString()
このバッファーの状態を要約した文字列を返します。

オーバーライド:
クラス Object 内の toString
戻り値:
概要文字列

hashCode

public int hashCode()
現在のバッファーの現在のハッシュコードを返します。

byte バッファーのハッシュコードは、バッファー内に残っている残りの要素、すなわち position()limit() - 1 の要素だけに依存します。

バッファーのハッシュコードはコンテンツ依存型です。 今後バッファーのコンテンツが変更されないことが明らかでないかぎり、バッファーをハッシュマップその他のデータ構造のキーとして使用することは避けてください。

オーバーライド:
クラス Object 内の hashCode
戻り値:
現在のバッファーの現在のハッシュコード
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object ob)
現在のバッファーが別のオブジェクトと等価であるかどうかを判断します。

2 つの byte バッファーは、次の場合にかぎり等価です。

  1. 要素の型が同じである

  2. バッファー内に残っている要素数が同じである

  3. バッファー内に残っている要素のシーケンス (開始位置とは無関係) が各点で等しい (pointwise equal)

byte バッファーが、その他の型のオブジェクトと等価になることはありません。

オーバーライド:
クラス Object 内の equals
パラメータ:
ob - 現在のバッファーと比較するオブジェクト
戻り値:
現在のバッファーが指定されたオブジェクトと等価である場合にかぎり true
関連項目:
Object.hashCode(), Hashtable

compareTo

public int compareTo(ByteBuffer that)
現在のバッファーを別のバッファーと比較します。

2 つの byte バッファーを比較する際は、バッファー内に残っている要素のシーケンスが辞書順に比較されます。このとき、双方のバッファー内に残っているシーケンスの開始位置は考慮されません。

このとき、双方のバッファー内に残っているシーケンスの開始位置は考慮されません。

定義:
インタフェース Comparable<ByteBuffer> 内の compareTo
パラメータ:
that - 比較対象のオブジェクト
戻り値:
short バッファーとその他の型のオブジェクトを比較することはできません。 現在のバッファーがもう一方のバッファーより小さい場合は負の整数、等しい場合は 0、大きい場合は正の整数

order

public final ByteOrder order()
現在のバッファーのバイト順序を取得します。

バイト順序は、複数バイトの値を読み取るときや書き込むとき、そしてこの byte バッファーのビューとなるバッファーを作成するときに使用します。新しく作成された byte バッファーの順序は常に BIG_ENDIAN になります。

戻り値:
現在のバッファーのバイト順序

order

public final ByteBuffer order(ByteOrder bo)
このバッファーのバイト順序を変更します。

パラメータ:
bo - 新しいバイト順序。 BIG_ENDIANLITTLE_ENDIAN のいずれか
戻り値:
現在のバッファー

getChar

public abstract char getChar()
char 値を読み取る相対「get」メソッドです。

このバッファーの現在位置から 2 バイトを読み込み、現在のバイト順序に従って、これらを char 値に変換します。 位置の値は、そのたびに 2 ずつ増加します。

戻り値:
バッファーの現在位置の char 値
例外:
BufferUnderflowException - このバッファー内に残っているバイト数が 2 バイトより少ない場合

putChar

public abstract ByteBuffer putChar(char value)
char 値を書き込む相対「put」メソッドです (任意操作)。

このバッファーの現在位置に、現在のバイト順序に従って、指定された char 値を含む 2 バイトを書き込みます。 位置の値は、そのたびに 2 ずつ増加します。

パラメータ:
value - 書き込まれる char 値
戻り値:
現在のバッファー
例外:
BufferOverflowException - このバッファー内に残っているバイト数が 2 バイトより少ない場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

getChar

public abstract char getChar(int index)
char 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 2 バイトを読み込み、現在のバイト順序に従って、これらを char 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の char 値
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -1

putChar

public abstract ByteBuffer putChar(int index,
                                   char value)
char 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファーの指定されたインデックス位置に、現在のバイト順序に従って、指定された char 値を含む 2 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる char 値
戻り値:
現在のバッファー
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -1
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

asCharBuffer

public abstract CharBuffer asCharBuffer()
文字バッファーとしてこの byte バッファーのビューを作成します。

新しいバッファーのコンテンツは、現在のバッファーの現在位置から始まります。現在のバッファーのコンテンツに変更を加えると、その内容が新しいバッファーに反映されます。 新しいバッファーのコンテンツに変更を加えると、その内容が現在のバッファーに反映されます。 2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファーの位置は 0、容量とリミットはこのバッファー内に残っているバイト数の 1/2 になります。 マークは定義されません。新しいバッファーは、現在のバッファーがダイレクトバッファーである場合に限りダイレクトバッファーになります。 また、現在のバッファーが読み取り専用バッファーである場合に限り読み取り専用バッファーになります。

戻り値:
新しい文字バッファー

getShort

public abstract short getShort()
short 値を読み取る相対「get」メソッドです。

このバッファーの現在位置から 2 バイトを読み込み、現在のバイト順序に従って、これらを short 値に変換します。 位置の値は、そのたびに 2 ずつ増加します。

戻り値:
バッファーの現在位置の short 値
例外:
BufferUnderflowException - このバッファー内に残っているバイト数が 2 バイトより少ない場合

putShort

public abstract ByteBuffer putShort(short value)
short 値を書き込む相対「put」メソッドです (任意操作)。

このバッファーの現在位置に、現在のバイト順序に従って、指定された short 値を含む 2 バイトを書き込みます。 位置の値は、そのたびに 2 ずつ増加します。

パラメータ:
value - 書き込まれる short 値
戻り値:
現在のバッファー
例外:
BufferOverflowException - このバッファー内に残っているバイト数が 2 バイトより少ない場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

getShort

public abstract short getShort(int index)
short 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 2 バイトを読み込み、現在のバイト順序に従って、これらを short 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の short 値
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -1

putShort

public abstract ByteBuffer putShort(int index,
                                    short value)
short 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファーの指定されたインデックス位置に、現在のバイト順序に従って、指定された short 値を含む 2 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる short 値
戻り値:
現在のバッファー
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -1
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

asShortBuffer

public abstract ShortBuffer asShortBuffer()
short バッファーとしてこの byte バッファーのビューを作成します。

新しいバッファーのコンテンツは、現在のバッファーの現在位置から始まります。現在のバッファーのコンテンツに変更を加えると、その内容が新しいバッファーに反映されます。 新しいバッファーのコンテンツに変更を加えると、その内容が現在のバッファーに反映されます。 2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファーの位置は 0、容量とリミットはこのバッファー内に残っているバイト数の 1/2 になります。 マークは定義されません。新しいバッファーは、現在のバッファーがダイレクトバッファーである場合に限りダイレクトバッファーになります。 また、現在のバッファーが読み取り専用バッファーである場合に限り読み取り専用バッファーになります。

戻り値:
新しい short バッファー

getInt

public abstract int getInt()
int 値を読み取る相対「get」メソッドです。

このバッファーの現在位置から 4 バイトを読み込み、現在のバイト順序に従って、これらを int 値に変換します。 位置の値は、そのたびに 4 ずつ増加します。

戻り値:
バッファーの現在位置の int 値
例外:
BufferUnderflowException - このバッファー内に残っているバイト数が 4 バイトより少ない場合

putInt

public abstract ByteBuffer putInt(int value)
int 値を書き込む相対「put」メソッドです (任意操作)。

このバッファーの現在位置に、現在のバイト順序に従って、指定された int 値を含む 4 バイトを書き込みます。 位置の値は、そのたびに 4 ずつ増加します。

パラメータ:
value - 書き込まれる int 値
戻り値:
現在のバッファー
例外:
BufferOverflowException - このバッファー内に残っているバイト数が 4 バイトより少ない場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

getInt

public abstract int getInt(int index)
int 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 4 バイトを読み込み、現在のバイト順序に従って、これらを int 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の int 値
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -3

putInt

public abstract ByteBuffer putInt(int index,
                                  int value)
int 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファーの指定されたインデックス位置に、現在のバイト順序に従って、指定された int 値を含む 4 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる int 値
戻り値:
現在のバッファー
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -3
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

asIntBuffer

public abstract IntBuffer asIntBuffer()
int バッファーとしてこの byte バッファーのビューを作成します。

新しいバッファーのコンテンツは、現在のバッファーの現在位置から始まります。現在のバッファーのコンテンツに変更を加えると、その内容が新しいバッファーに反映されます。 新しいバッファーのコンテンツに変更を加えると、その内容が現在のバッファーに反映されます。 2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファーの位置は 0、容量とリミットはこのバッファー内に残っているバイト数の 1/4 になります。 マークは定義されません。新しいバッファーは、現在のバッファーがダイレクトバッファーである場合に限りダイレクトバッファーになります。 また、現在のバッファーが読み取り専用バッファーである場合に限り読み取り専用バッファーになります。

戻り値:
新しい int バッファー

getLong

public abstract long getLong()
long 値を読み取る相対「get」メソッドです。

このバッファーの現在位置から 8 バイトを読み込み、現在のバイト順序に従って、これらを long 値に変換します。 位置の値は、そのたびに 8 ずつ増加します。

戻り値:
バッファーの現在位置の long 値
例外:
BufferUnderflowException - このバッファー内に残っているバイト数が 8 バイトより少ない場合

putLong

public abstract ByteBuffer putLong(long value)
long 値を書き込む相対「put」メソッドです (任意操作)。

このバッファーの現在位置に、現在のバイト順序に従って、指定された long 値を含む 8 バイトを書き込みます。 位置の値は、そのたびに 8 ずつ増加します。

パラメータ:
value - 書き込まれる long 値
戻り値:
現在のバッファー
例外:
BufferOverflowException - このバッファー内に残っているバイト数が 8 バイトより少ない場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

getLong

public abstract long getLong(int index)
long 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 8 バイトを読み込み、現在のバイト順序に従って、これらを long 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の long 値
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -7

putLong

public abstract ByteBuffer putLong(int index,
                                   long value)
long 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファーの指定されたインデックス位置に、現在のバイト順序に従って、指定された long 値を含む 8 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる long 値
戻り値:
現在のバッファー
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -7
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

asLongBuffer

public abstract LongBuffer asLongBuffer()
long バッファーとしてこの byte バッファーのビューを作成します。

新しいバッファーのコンテンツは、現在のバッファーの現在位置から始まります。現在のバッファーのコンテンツに変更を加えると、その内容が新しいバッファーに反映されます。 新しいバッファーのコンテンツに変更を加えると、その内容が現在のバッファーに反映されます。 2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファーの位置は 0、容量とリミットはこのバッファー内に残っているバイト数の 1/8 になります。 マークは定義されません。新しいバッファーは、現在のバッファーがダイレクトバッファーである場合に限りダイレクトバッファーになります。 また、現在のバッファーが読み取り専用バッファーである場合に限り読み取り専用バッファーになります。

戻り値:
新しい long バッファー

getFloat

public abstract float getFloat()
float 値を読み取る相対「get」メソッドです。

このバッファーの現在位置から 4 バイトを読み込み、現在のバイト順序に従って、これらを float 値に変換します。 位置の値は、そのたびに 4 ずつ増加します。

戻り値:
バッファーの現在位置の float 値
例外:
BufferUnderflowException - このバッファー内に残っているバイト数が 4 バイトより少ない場合

putFloat

public abstract ByteBuffer putFloat(float value)
float 値を書き込む相対「put」メソッドです (任意操作)。

このバッファーの現在位置に、現在のバイト順序に従って、指定された float 値を含む 4 バイトを書き込みます。 位置の値は、そのたびに 4 ずつ増加します。

パラメータ:
value - 書き込まれる float 値
戻り値:
現在のバッファー
例外:
BufferOverflowException - このバッファー内に残っているバイト数が 4 バイトより少ない場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

getFloat

public abstract float getFloat(int index)
float 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 4 バイトを読み込み、現在のバイト順序に従って、これらを float 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の float 値
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -3

putFloat

public abstract ByteBuffer putFloat(int index,
                                    float value)
float 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファーの指定されたインデックス位置に、現在のバイト順序に従って、指定された float 値を含む 4 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる float 値
戻り値:
現在のバッファー
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -3
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

asFloatBuffer

public abstract FloatBuffer asFloatBuffer()
float バッファーとしてこの byte バッファーのビューを作成します。

新しいバッファーのコンテンツは、現在のバッファーの現在位置から始まります。現在のバッファーのコンテンツに変更を加えると、その内容が新しいバッファーに反映されます。 新しいバッファーのコンテンツに変更を加えると、その内容が現在のバッファーに反映されます。 2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファーの位置は 0、容量とリミットはこのバッファー内に残っているバイト数の 1/4 になります。 マークは定義されません。新しいバッファーは、現在のバッファーがダイレクトバッファーである場合に限りダイレクトバッファーになります。 また、現在のバッファーが読み取り専用バッファーである場合に限り読み取り専用バッファーになります。

戻り値:
新しい float バッファー

getDouble

public abstract double getDouble()
double 値を読み取る相対「get」メソッドです。

このバッファーの現在位置から 8 バイトを読み込み、現在のバイト順序に従って、これらを double 値に変換します。 位置の値は、そのたびに 8 ずつ増加します。

戻り値:
バッファーの現在位置の double 値
例外:
BufferUnderflowException - このバッファー内に残っているバイト数が 8 バイトより少ない場合

putDouble

public abstract ByteBuffer putDouble(double value)
double 値を書き込む相対「put」メソッドです (任意操作)。

このバッファーの現在位置に、現在のバイト順序に従って、指定された double 値を含む 8 バイトを書き込みます。 位置の値は、そのたびに 8 ずつ増加します。

パラメータ:
value - 書き込まれる double 値
戻り値:
現在のバッファー
例外:
BufferOverflowException - このバッファー内に残っているバイト数が 8 バイトより少ない場合
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

getDouble

public abstract double getDouble(int index)
double 値を読み取る絶対「get」メソッドです。

指定されたインデックス位置にある 8 バイトを読み込み、現在のバイト順序に従って、これらを double 値に変換します。

パラメータ:
index - バイトの読み込み位置を示すインデックス
戻り値:
指定されたインデックス位置の double 値
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -7

putDouble

public abstract ByteBuffer putDouble(int index,
                                     double value)
double 値を書き込む絶対「put」メソッドです (任意操作)。

このバッファーの指定されたインデックス位置に、現在のバイト順序に従って、指定された double 値を含む 8 バイトを書き込みます。

パラメータ:
index - バイトの書き込み先を示すインデックス
value - 書き込まれる double 値
戻り値:
現在のバッファー
例外:
IndexOutOfBoundsException - index が負の値である場合、またはバッファーのリミット以上である場合、 -7
ReadOnlyBufferException - 現在のバッファーが読み込み専用バッファーである場合

asDoubleBuffer

public abstract DoubleBuffer asDoubleBuffer()
double バッファーとしてこの byte バッファーのビューを作成します。

新しいバッファーのコンテンツは、現在のバッファーの現在位置から始まります。現在のバッファーのコンテンツに変更を加えると、その内容が新しいバッファーに反映されます。 新しいバッファーのコンテンツに変更を加えると、その内容が現在のバッファーに反映されます。 2 つのバッファーの位置、リミット、マークの値はそれぞれ異なります。

新しいバッファーの位置は 0、容量とリミットはこのバッファー内に残っているバイト数の 1/8 になります。 マークは定義されません。新しいバッファーは、現在のバッファーがダイレクトバッファーである場合に限りダイレクトバッファーになります。 また、現在のバッファーが読み取り専用バッファーである場合に限り読み取り専用バッファーになります。

戻り値:
新しい double バッファー

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。