Most visited

Recently visited

Added in API level 1

ByteBuffer

public abstract class ByteBuffer
extends Buffer implements Comparable<ByteBuffer>

java.lang.Object
   ↳ java.nio.Buffer
     ↳ java.nio.ByteBuffer
Known Direct Subclasses


一个字节缓冲区。

该类在字节缓冲区中定义了六类操作:

字节缓冲器可以通过以下方式创建 allocation ,这对于缓冲区内容分配空间,或通过 wrapping现有字节数组到缓冲区中。

Direct vs. non-direct buffers

字节缓冲区可以是直接的也可以是非直接的 给定一个直接的字节缓冲区,Java虚拟机将尽最大努力直接对它执行本地I / O操作。 也就是说,它将尝试避免在每次调用某个底层操作系统的本地I / O操作之前(或之后)将缓冲区内容复制到(或从)中间缓冲区。

A direct byte buffer may be created by invoking the allocateDirect这个类的工厂方法。 这种方法返回的缓冲区通常比非直接缓冲区有更高的分配和释放成本。 直接缓冲区的内容可能位于正常垃圾收集堆的外部,因此它们对应用程序内存占用量的影响可能不明显。 因此,建议将直接缓冲区主要分配给受底层系统本地I / O操作影响的大型,长寿命缓冲区。 一般来说,只有当它们在程序性能上产生可测量的增益时才最好分配直接缓冲区。

直接字节缓冲区还可以通过创建 mapping的文件的区域直接到内存中。 Java平台的实现可以选择性地支持通过JNI从本地代码创建直接字节缓冲区。 如果其中一种缓冲区的实例引用了内存的不可访问区域,那么尝试访问该区域将不会更改缓冲区的内容,并且会导致在访问时或稍后引发未指定的异常时间。

字节缓冲区是直接还是非直接可以通过调用其isDirect方法来确定。 提供此方法的目的是显式缓冲区管理可以在性能关键的代码中完成。

Access to binary data

This class defines methods for reading and writing values of all other primitive types, except boolean. Primitive values are translated to (or from) sequences of bytes according to the buffer's current byte order, which may be retrieved and modified via the order方法。 特定的字节顺序由ByteOrder类的实例表示。 字节缓冲区的初始顺序始终为BIG_ENDIAN

为了访问异构二进制数据,即不同类型的值序列,该类为每种类型定义了一系列绝对和相对的getput方法。 例如,对于32位浮点值,此类定义:

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

相应的方法被用于类型char,short,int,long,double限定。 绝对getput方法的索引参数是以字节为单位而不是被读取或写入的类型。

例如, For access to homogeneous binary data, that is, sequences of values of the same type, this class defines methods that can create views of a given byte buffer. A view buffer is simply another buffer whose content is backed by the byte buffer. Changes to the byte buffer's content will be visible in the view buffer, and vice versa; the two buffers' position, limit, and mark values are independent. The asFloatBuffer方法创建FloatBuffer类的实例,该实例由调用该方法的字节缓冲区支持。 相应的视图创建方法的各类char,short,int,long,double限定。

与上面描述的类型特定的 getput方法的家族相比,查看缓冲区有三个重要的优点:

视图缓冲区的字节顺序在创建视图时被固定为其字节缓冲区的字节顺序。

Invocation chaining

指定此类中不具有返回值的方法以返回调用它们的缓冲区。 这允许方法调用被链接。 陈述的顺序

 bb.putInt(0xCAFEBABE);
 bb.putShort(3);
 bb.putShort(45);
can, for example, be replaced by the single statement
 bb.putInt(0xCAFEBABE).putShort(3).putShort(45);

Summary

Public methods

static ByteBuffer allocate(int capacity)

分配一个新的字节缓冲区。

static ByteBuffer allocateDirect(int capacity)

分配新的直接字节缓冲区。

final byte[] array()

返回支持此缓冲区的字节数组 (可选操作)

final int arrayOffset()

返回缓冲区第一个元素 (可选操作)的此缓冲区的后备数组内的偏移量。

abstract CharBuffer asCharBuffer()

创建该字节缓冲区的视图作为字符缓冲区。

abstract DoubleBuffer asDoubleBuffer()

创建该字节缓冲区的视图为双缓冲区。

abstract FloatBuffer asFloatBuffer()

以浮点缓冲区的形式创建此字节缓冲区的视图。

abstract IntBuffer asIntBuffer()

以int缓冲区的形式创建该字节缓冲区的视图。

abstract LongBuffer asLongBuffer()

将该字节缓冲区的视图创建为长缓冲区。

abstract ByteBuffer asReadOnlyBuffer()

创建一个共享此缓冲区内容的新的只读字节缓冲区。

abstract ShortBuffer asShortBuffer()

将此字节缓冲区的视图创建为短缓冲区。

abstract ByteBuffer compact()

压缩此缓冲区 (可选操作)

int compareTo(ByteBuffer that)

将此缓冲区与另一个进行比较。

abstract ByteBuffer duplicate()

创建一个共享此缓冲区内容的新字节缓冲区。

boolean equals(Object ob)

告诉这个缓冲区是否等于另一个对象。

abstract byte get()

相对 获得方法。

ByteBuffer get(byte[] dst, int offset, int length)

相对批量 获取方法。

abstract byte get(int index)

绝对 get方法。

ByteBuffer get(byte[] dst)

相对批量 获取方法。

abstract char getChar()

读取char值的相对 get方法。

abstract char getChar(int index)

用于读取char值的绝对 get方法。

abstract double getDouble(int index)

读取double值的绝对 get方法。

abstract double getDouble()

读取double值的相对 get方法。

abstract float getFloat()

读取float值的相对 get方法。

abstract float getFloat(int index)

用于读取浮点值的绝对 get方法。

abstract int getInt(int index)

读取int值的绝对 get方法。

abstract int getInt()

读取int值的相对 get方法。

abstract long getLong(int index)

绝对 get方法读取长整型值。

abstract long getLong()

读取长整型值的相对 获取方法。

abstract short getShort(int index)

读取短值的绝对 获取方法。

abstract short getShort()

读取短值的相对 获取方法。

final boolean hasArray()

告诉这个缓冲区是否由可访问的字节数组支持。

int hashCode()

返回此缓冲区的当前哈希码。

abstract boolean isDirect()

告诉这个字节缓冲区是否是直接的。

final ByteOrder order()

检索此缓冲区的字节顺序。

final ByteBuffer order(ByteOrder bo)

修改此缓冲区的字节顺序。

final ByteBuffer put(byte[] src)

相对批量 放置方法 (可选操作)

abstract ByteBuffer put(byte b)

相对 放置方法 (可选操作)

ByteBuffer put(byte[] src, int offset, int length)

相对批量 放置方法 (可选操作)

abstract ByteBuffer put(int index, byte b)

绝对 放置方法 (可选操作)

ByteBuffer put(ByteBuffer src)

相对批量 放置方法 (可选操作)

abstract ByteBuffer putChar(int index, char value)

写入char值的绝对 put方法 (可选操作)

abstract ByteBuffer putChar(char value)

写入char值的相对 put方法 (可选操作)

abstract ByteBuffer putDouble(double value)

写入double值的相对 put方法 (可选操作)

abstract ByteBuffer putDouble(int index, double value)

写入double值的绝对 put方法 (可选操作)

abstract ByteBuffer putFloat(int index, float value)

写入浮点值的绝对 put方法 (可选操作)

abstract ByteBuffer putFloat(float value)

写入浮点值的相对 put方法 (可选操作)

abstract ByteBuffer putInt(int index, int value)

写入int值的绝对 put方法 (可选操作)

abstract ByteBuffer putInt(int value)

写入int值的相对 put方法 (可选操作)

abstract ByteBuffer putLong(long value)

写入长整型值的相对 put方法 (可选操作)

abstract ByteBuffer putLong(int index, long value)

写入长整型值的绝对 put方法 (可选操作)

abstract ByteBuffer putShort(short value)

写入短数值的相对 放入方法 (可选操作)

abstract ByteBuffer putShort(int index, short value)

写入短暂值的绝对 put方法 (可选操作)

abstract ByteBuffer slice()

创建一个新的字节缓冲区,其内容是此缓冲区内容的共享子序列。

String toString()

返回汇总此缓冲区状态的字符串。

static ByteBuffer wrap(byte[] array)

将一个字节数组包装到缓冲区中。

static ByteBuffer wrap(byte[] array, int offset, int length)

将一个字节数组包装到缓冲区中。

Inherited methods

From class java.nio.Buffer
From class java.lang.Object
From interface java.lang.Comparable

Public methods

allocate

Added in API level 1
ByteBuffer allocate (int capacity)

分配一个新的字节缓冲区。

新的缓冲区的位置将为零,其限制将是其容量,其标记将是未定义的,并且其每个元素将被初始化为零。 它将有一个 backing array ,其 array offset将为零。

Parameters
capacity int: The new buffer's capacity, in bytes
Returns
ByteBuffer The new byte buffer
Throws
IllegalArgumentException If the capacity is a negative integer

allocateDirect

Added in API level 1
ByteBuffer allocateDirect (int capacity)

分配新的直接字节缓冲区。

新的缓冲区的位置将为零,其限制将是其容量,其标记将是未定义的,并且其每个元素将被初始化为零。 是否具有 backing array未指定。

Parameters
capacity int: The new buffer's capacity, in bytes
Returns
ByteBuffer The new byte buffer
Throws
IllegalArgumentException If the capacity is a negative integer

array

Added in API level 1
byte[] array ()

返回支持此缓冲区的字节数组 (可选操作)

修改此缓冲区的内容将导致返回的数组内容被修改,反之亦然。

在调用此方法之前调用 hasArray方法,以确保此缓冲区具有可访问的后备数组。

Returns
byte[] The array that backs this buffer
Throws
ReadOnlyBufferException If this buffer is backed by an array but is read-only
UnsupportedOperationException If this buffer is not backed by an accessible array

arrayOffset

Added in API level 1
int arrayOffset ()

返回缓冲区第一个元素 (可选操作)的此缓冲区的后备数组内的偏移量。

如果此缓冲区由数组支持,则缓冲区位置 p对应于数组索引 p + arrayOffset()

在调用此方法之前调用 hasArray方法,以确保此缓冲区具有可访问的后备数组。

Returns
int The offset within this buffer's array of the first element of the buffer
Throws
ReadOnlyBufferException If this buffer is backed by an array but is read-only
UnsupportedOperationException If this buffer is not backed by an accessible array

asCharBuffer

Added in API level 1
CharBuffer asCharBuffer ()

创建该字节缓冲区的视图作为字符缓冲区。

新缓冲区的内容将从此缓冲区的当前位置开始。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的位置将为零,其容量和限制将是此缓冲区中剩余的字节数除以2,其标记将是未定义的。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。

Returns
CharBuffer A new char buffer

asDoubleBuffer

Added in API level 1
DoubleBuffer asDoubleBuffer ()

创建该字节缓冲区的视图为双缓冲区。

新缓冲区的内容将从此缓冲区的当前位置开始。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的位置将为零,其容量和限制将是该缓冲区中剩余的字节数除以8,其标记将是未定义的。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。

Returns
DoubleBuffer A new double buffer

asFloatBuffer

Added in API level 1
FloatBuffer asFloatBuffer ()

以浮点缓冲区的形式创建此字节缓冲区的视图。

新缓冲区的内容将从此缓冲区的当前位置开始。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的位置将为零,其容量和限制将是此缓冲区中剩余的字节数除以4,其标记将是未定义的。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。

Returns
FloatBuffer A new float buffer

asIntBuffer

Added in API level 1
IntBuffer asIntBuffer ()

以int缓冲区的形式创建该字节缓冲区的视图。

新缓冲区的内容将从此缓冲区的当前位置开始。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的位置将为零,其容量和限制将是此缓冲区中剩余的字节数除以4,其标记将是未定义的。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。

Returns
IntBuffer A new int buffer

asLongBuffer

Added in API level 1
LongBuffer asLongBuffer ()

将该字节缓冲区的视图创建为长缓冲区。

新缓冲区的内容将从此缓冲区的当前位置开始。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided by eight, and its mark will be undefined. The new buffer will be direct if, and only if, this buffer is direct, and it will be read-only if, and only if, this buffer is read-only.

Returns
LongBuffer A new long buffer

asReadOnlyBuffer

Added in API level 1
ByteBuffer asReadOnlyBuffer ()

创建一个共享此缓冲区内容的新的只读字节缓冲区。

新缓冲区的内容将是该缓冲区的内容。 此缓冲区内容的更改将在新缓冲区中可见; 但是新的缓冲区本身将是只读的,并且不允许修改共享内容。 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的容量,限制,位置和标记值将与该缓冲区的相同。

如果此缓冲区本身是只读的,则此方法的行为方式与 duplicate方法完全相同。

Returns
ByteBuffer The new, read-only byte buffer

asShortBuffer

Added in API level 1
ShortBuffer asShortBuffer ()

将此字节缓冲区的视图创建为短缓冲区。

新缓冲区的内容将从此缓冲区的当前位置开始。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的位置将为零,其容量和限制将是此缓冲区中剩余的字节数除以2,其标记将是未定义的。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。

Returns
ShortBuffer A new short buffer

compact

Added in API level 1
ByteBuffer compact ()

压缩此缓冲区 (可选操作)

缓冲区当前位置与其限制之间的字节(如果有)将被复制到缓冲区的开始处。 即,在索引p = position()复制到索引零字节,在索引p + 1的字节被复制到索引1,依此类推,直到在索引limit()字节- 1被复制到索引n = limit() - 1 - p 然后将缓冲区的位置设置为n + 1,并将其限制设置为其容量。 标记(如果已定义)将被丢弃。

缓冲区的位置设置为复制的字节数,而不是零,因此可以立即调用另一个相对 放置方法来调用此方法。

在写入数据不完整时从缓冲区写入数据后调用此方法。 例如,以下循环通过缓冲区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
 }

Returns
ByteBuffer This buffer
Throws
ReadOnlyBufferException If this buffer is read-only

compareTo

Added in API level 1
int compareTo (ByteBuffer that)

将此缓冲区与另一个进行比较。

通过按照字典顺序比较剩余元素的序列来比较两个字节的缓冲区,而不考虑每个序列在其相应缓冲区内的开始位置。 byte元素进行比较,就好像调用compare(byte, byte)

字节缓冲区不能与任何其他类型的对象相比较。

Parameters
that ByteBuffer
Returns
int A negative integer, zero, or a positive integer as this buffer is less than, equal to, or greater than the given buffer

duplicate

Added in API level 1
ByteBuffer duplicate ()

创建一个共享此缓冲区内容的新字节缓冲区。

新缓冲区的内容将是该缓冲区的内容。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的容量,限制,位置和标记值将与该缓冲区的相同。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。

Returns
ByteBuffer The new byte buffer

equals

Added in API level 1
boolean equals (Object ob)

告诉这个缓冲区是否等于另一个对象。

Two byte buffers are equal if, and only if,

  1. 它们具有相同的元素类型,

  2. 他们有相同数量的剩余元素,并且

  3. 独立于其起始位置考虑的剩余元素的两个序列是逐点相等的。

A byte buffer is not equal to any other type of object.

Parameters
ob Object: The object to which this buffer is to be compared
Returns
boolean true if, and only if, this buffer is equal to the given object

get

Added in API level 1
byte get ()

相对获得方法。 在此缓冲区的当前位置读取该字节,然后递增该位置。

Returns
byte The byte at the buffer's current position
Throws
BufferUnderflowException If the buffer's current position is not smaller than its limit

get

Added in API level 1
ByteBuffer get (byte[] dst, 
                int offset, 
                int length)

相对批量 获取方法。

此方法将来自此缓冲区的字节传输到给定的目标数组中。 如果缓冲区中剩余的字节数少于满足请求所需的字节数,即length > remaining() ,则不传输字节并引发BufferUnderflowException

否则,此方法将此缓冲区中的length个字节复制到给定数组中,从此缓冲区的当前位置开始,并位于数组中给定的偏移位置。 此缓冲区的位置然后递增length

换句话说,调用表单 src.get(dst, off, len)的这种方法与 循环具有完全相同的效果

     for (int i = off; i < off + len; i++)
         dst[i] = src.get(); 
except that it first checks that there are sufficient bytes in this buffer and it is potentially much more efficient.

Parameters
dst byte: The array into which bytes are to be written
offset int: The offset within the array of the first byte to be written; must be non-negative and no larger than dst.length
length int: The maximum number of bytes to be written to the given array; must be non-negative and no larger than dst.length - offset
Returns
ByteBuffer This buffer
Throws
BufferUnderflowException If there are fewer than length bytes remaining in this buffer
IndexOutOfBoundsException If the preconditions on the offset and length parameters do not hold

get

Added in API level 1
byte get (int index)

绝对get方法。 读取给定索引处的字节。

Parameters
index int: The index from which the byte will be read
Returns
byte The byte at the given index
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit

get

Added in API level 1
ByteBuffer get (byte[] dst)

相对批量 获取方法。

此方法将来自此缓冲区的字节传输到给定的目标数组中。 表单src.get(a)的此方法的调用的行为与调用完全相同

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

Parameters
dst byte
Returns
ByteBuffer This buffer
Throws
BufferUnderflowException If there are fewer than length bytes remaining in this buffer

getChar

Added in API level 1
char getChar ()

读取char值的相对 get方法。

读取此缓冲区当前位置的下两个字节,根据当前字节顺序将它们组合为char值,然后将位置增加2。

Returns
char The char value at the buffer's current position
Throws
BufferUnderflowException If there are fewer than two bytes remaining in this buffer

getChar

Added in API level 1
char getChar (int index)

用于读取char值的绝对 get方法。

读取给定索引处的两个字节,根据当前字节顺序将它们组成char值。

Parameters
index int: The index from which the bytes will be read
Returns
char The char value at the given index
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus one

getDouble

Added in API level 1
double getDouble (int index)

读取double值的绝对 get方法。

读取给定索引处的八个字节,根据当前字节顺序将它们组合为一个double值。

Parameters
index int: The index from which the bytes will be read
Returns
double The double value at the given index
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus seven

getDouble

Added in API level 1
double getDouble ()

读取double值的相对 get方法。

读取此缓冲区当前位置的后八个字节,根据当前字节顺序将它们组合为一个double值,然后将该位置增加八。

Returns
double The double value at the buffer's current position
Throws
BufferUnderflowException If there are fewer than eight bytes remaining in this buffer

getFloat

Added in API level 1
float getFloat ()

读取float值的相对 get方法。

读取此缓冲区当前位置的下四个字节,根据当前字节顺序将它们组合为浮点值,然后将位置增加4。

Returns
float The float value at the buffer's current position
Throws
BufferUnderflowException If there are fewer than four bytes remaining in this buffer

getFloat

Added in API level 1
float getFloat (int index)

用于读取浮点值的绝对 get方法。

在给定索引处读取四个字节,根据当前字节顺序将它们组成浮点值。

Parameters
index int: The index from which the bytes will be read
Returns
float The float value at the given index
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus three

getInt

Added in API level 1
int getInt (int index)

读取int值的绝对 get方法。

在给定索引处读取四个字节,根据当前字节顺序将它们组成一个int值。

Parameters
index int: The index from which the bytes will be read
Returns
int The int value at the given index
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus three

getInt

Added in API level 1
int getInt ()

读取int值的相对 get方法。

读取此缓冲区当前位置的下四个字节,根据当前字节顺序将它们组合为int值,然后将位置增加4。

Returns
int The int value at the buffer's current position
Throws
BufferUnderflowException If there are fewer than four bytes remaining in this buffer

getLong

Added in API level 1
long getLong (int index)

绝对 get方法读取长整型值。

根据当前字节顺序在给定索引处读取八个字节,将它们组合为一个长整型值。

Parameters
index int: The index from which the bytes will be read
Returns
long The long value at the given index
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus seven

getLong

Added in API level 1
long getLong ()

读取长整型值的相对 获取方法。

读取此缓冲区当前位置的下8个字节,根据当前字节顺序将它们组合为长值,然后将位置增加8。

Returns
long The long value at the buffer's current position
Throws
BufferUnderflowException If there are fewer than eight bytes remaining in this buffer

getShort

Added in API level 1
short getShort (int index)

读取短值的绝对 获取方法。

读取给定索引处的两个字节,根据当前字节顺序将它们组成短值。

Parameters
index int: The index from which the bytes will be read
Returns
short The short value at the given index
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus one

getShort

Added in API level 1
short getShort ()

读取短值的相对 获取方法。

在此缓冲区的当前位置读取接下来的两个字节,根据当前字节顺序将它们组成短值,然后将位置增加2。

Returns
short The short value at the buffer's current position
Throws
BufferUnderflowException If there are fewer than two bytes remaining in this buffer

hasArray

Added in API level 1
boolean hasArray ()

告诉这个缓冲区是否由可访问的字节数组支持。

如果此方法返回 true,则可以安全地调用 arrayarrayOffset方法。

Returns
boolean true if, and only if, this buffer is backed by an array and is not read-only

hashCode

Added in API level 1
int hashCode ()

返回此缓冲区的当前哈希码。

字节缓冲区的哈希码仅依赖于其余的元素; 也就是说,从position()limit() - 1处的元素(包括元素)。

由于缓冲区散列码与内容相关,因此除非知道其内容不会改变,否则在散列映射或类似数据结构中使用缓冲区作为键是不可取的。

Returns
int The current hash code of this buffer

isDirect

Added in API level 1
boolean isDirect ()

告诉这个字节缓冲区是否是直接的。

Returns
boolean true if, and only if, this buffer is direct

order

Added in API level 1
ByteOrder order ()

检索此缓冲区的字节顺序。

读取或写入多字节值时以及创建缓冲区时,将使用字节顺序来查看此字节缓冲区。 新创建的字节缓冲区的顺序始终为BIG_ENDIAN

Returns
ByteOrder This buffer's byte order

order

Added in API level 1
ByteBuffer order (ByteOrder bo)

Modifies this buffer's byte order.

Parameters
bo ByteOrder: The new byte order, either BIG_ENDIAN or LITTLE_ENDIAN
Returns
ByteBuffer This buffer

put

Added in API level 1
ByteBuffer put (byte[] src)

相对批量 放置方法 (可选操作)

此方法将给定源字节数组的全部内容传输到此缓冲区。 表单dst.put(a)的这种方法的调用的行为与调用完全相同

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

Parameters
src byte
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If there is insufficient space in this buffer
ReadOnlyBufferException If this buffer is read-only

put

Added in API level 1
ByteBuffer put (byte b)

相对 放置方法 (可选操作)

将给定的字节写入当前位置的缓冲区,然后增加位置。

Parameters
b byte: The byte to be written
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If this buffer's current position is not smaller than its limit
ReadOnlyBufferException If this buffer is read-only

put

Added in API level 1
ByteBuffer put (byte[] src, 
                int offset, 
                int length)

相对批量 放置方法 (可选操作)

该方法将字节从给定的源数组传输到此缓冲区。 如果从阵列中复制的字节数多于保留在此缓冲区中的字节数,也就是说,如果length > remaining() ,则不传输字节并且引发BufferOverflowException

否则,此方法将length字节从给定数组复制到此缓冲区,从数组中给定的偏移量开始,并在此缓冲区的当前位置处开始。 此缓冲区的位置然后增加length

换句话说,调用这种形式为 dst.put(src, off, len)的方法与 循环具有完全相同的效果

     for (int i = off; i < off + len; i++)
         dst.put(a[i]); 
except that it first checks that there is sufficient space in this buffer and it is potentially much more efficient.

Parameters
src byte: The array from which bytes are to be read
offset int: The offset within the array of the first byte to be read; must be non-negative and no larger than array.length
length int: The number of bytes to be read from the given array; must be non-negative and no larger than array.length - offset
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If there is insufficient space in this buffer
IndexOutOfBoundsException If the preconditions on the offset and length parameters do not hold
ReadOnlyBufferException If this buffer is read-only

put

Added in API level 1
ByteBuffer put (int index, 
                byte b)

绝对 放置方法 (可选操作)

将给定的字节写入该缓冲区中给定的索引处。

Parameters
index int: The index at which the byte will be written
b byte: The byte value to be written
Returns
ByteBuffer This buffer
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit
ReadOnlyBufferException If this buffer is read-only

put

Added in API level 1
ByteBuffer put (ByteBuffer src)

相对批量 放置方法 (可选操作)

此方法将给定源缓冲区中剩余的字节传输到此缓冲区。 如果源缓冲区中剩余的字节数多于此缓冲区中的字节数,也就是说,如果src.remaining() > remaining() ,则不传送字节并且引发BufferOverflowException

否则,该方法将n = src.remaining()字节从给定缓冲区复制到此缓冲区,从每个缓冲区的当前位置开始。 然后两个缓冲器的位置增加n

换句话说,调用这种形式为 dst.put(src)的方法与 循环具有完全相同的效果

     while (src.hasRemaining())
         dst.put(src.get()); 
except that it first checks that there is sufficient space in this buffer and it is potentially much more efficient.

Parameters
src ByteBuffer: The source buffer from which bytes are to be read; must not be this buffer
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If there is insufficient space in this buffer for the remaining bytes in the source buffer
IllegalArgumentException If the source buffer is this buffer
ReadOnlyBufferException If this buffer is read-only

putChar

Added in API level 1
ByteBuffer putChar (int index, 
                char value)

写入char值的绝对 put方法 (可选操作)

将包含给定char值的两个字节按当前字节顺序写入此缓冲区中给定索引处。

Parameters
index int: The index at which the bytes will be written
value char: The char value to be written
Returns
ByteBuffer This buffer
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus one
ReadOnlyBufferException If this buffer is read-only

putChar

Added in API level 1
ByteBuffer putChar (char value)

写入char值的相对 put方法 (可选操作)

将包含给定char值的两个字节以当前字节顺序写入当前位置的缓冲区,然后将位置增加2。

Parameters
value char: The char value to be written
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If there are fewer than two bytes remaining in this buffer
ReadOnlyBufferException If this buffer is read-only

putDouble

Added in API level 1
ByteBuffer putDouble (double value)

写入double值的相对 put方法 (可选操作)

将包含给定double值的八个字节以当前字节顺序写入当前位置的缓冲区,然后将该位置增加八。

Parameters
value double: The double value to be written
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If there are fewer than eight bytes remaining in this buffer
ReadOnlyBufferException If this buffer is read-only

putDouble

Added in API level 1
ByteBuffer putDouble (int index, 
                double value)

写入double值的绝对 put方法 (可选操作)

将包含给定double值的八个字节按当前字节顺序写入给定索引处的此缓冲区。

Parameters
index int: The index at which the bytes will be written
value double: The double value to be written
Returns
ByteBuffer This buffer
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus seven
ReadOnlyBufferException If this buffer is read-only

putFloat

Added in API level 1
ByteBuffer putFloat (int index, 
                float value)

写入浮点值的绝对 put方法 (可选操作)

将包含给定float值的四个字节按当前字节顺序写入给定索引处的此缓冲区中。

Parameters
index int: The index at which the bytes will be written
value float: The float value to be written
Returns
ByteBuffer This buffer
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus three
ReadOnlyBufferException If this buffer is read-only

putFloat

Added in API level 1
ByteBuffer putFloat (float value)

写入浮点值的相对 put方法 (可选操作)

将包含给定float值的四个字节按当前字节顺序写入当前位置的缓冲区中,然后将位置增加四。

Parameters
value float: The float value to be written
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If there are fewer than four bytes remaining in this buffer
ReadOnlyBufferException If this buffer is read-only

putInt

Added in API level 1
ByteBuffer putInt (int index, 
                int value)

写入int值的绝对 put方法 (可选操作)

将包含给定int值的四个字节以当前字节顺序写入给定索引处的此缓冲区。

Parameters
index int: The index at which the bytes will be written
value int: The int value to be written
Returns
ByteBuffer This buffer
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus three
ReadOnlyBufferException If this buffer is read-only

putInt

Added in API level 1
ByteBuffer putInt (int value)

写入int值的相对 put方法 (可选操作)

将包含给定int值的四个字节按当前字节顺序写入当前位置的此缓冲区,然后将位置增加四。

Parameters
value int: The int value to be written
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If there are fewer than four bytes remaining in this buffer
ReadOnlyBufferException If this buffer is read-only

putLong

Added in API level 1
ByteBuffer putLong (long value)

写入长整型值的相对 put方法 (可选操作)

将包含给定long值的八个字节按当前字节顺序写入当前位置的缓冲区,然后将位置增加八。

Parameters
value long: The long value to be written
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If there are fewer than eight bytes remaining in this buffer
ReadOnlyBufferException If this buffer is read-only

putLong

Added in API level 1
ByteBuffer putLong (int index, 
                long value)

写入长整型值的绝对 put方法 (可选操作)

将包含给定long值的八个字节以当前字节顺序写入给定索引处的此缓冲区。

Parameters
index int: The index at which the bytes will be written
value long: The long value to be written
Returns
ByteBuffer This buffer
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus seven
ReadOnlyBufferException If this buffer is read-only

putShort

Added in API level 1
ByteBuffer putShort (short value)

写入短数值的相对 放入方法 (可选操作)

将包含给定short值的两个字节按当前字节顺序写入当前位置的缓冲区,然后将位置增加2。

Parameters
value short: The short value to be written
Returns
ByteBuffer This buffer
Throws
BufferOverflowException If there are fewer than two bytes remaining in this buffer
ReadOnlyBufferException If this buffer is read-only

putShort

Added in API level 1
ByteBuffer putShort (int index, 
                short value)

写入短暂值的绝对 put方法 (可选操作)

将包含给定short值的两个字节以当前字节顺序写入给定索引处的此缓冲区中。

Parameters
index int: The index at which the bytes will be written
value short: The short value to be written
Returns
ByteBuffer This buffer
Throws
IndexOutOfBoundsException If index is negative or not smaller than the buffer's limit, minus one
ReadOnlyBufferException If this buffer is read-only

slice

Added in API level 1
ByteBuffer slice ()

创建一个新的字节缓冲区,其内容是此缓冲区内容的共享子序列。

新缓冲区的内容将从此缓冲区的当前位置开始。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的位置将为零,其容量和限制将是剩余在此缓冲区中的字节数,并且其标记将是未定义的。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。

Returns
ByteBuffer The new byte buffer

toString

Added in API level 1
String toString ()

返回汇总此缓冲区状态的字符串。

Returns
String A summary string

wrap

Added in API level 1
ByteBuffer wrap (byte[] array)

将一个字节数组包装到缓冲区中。

新缓冲区将由给定的字节数组支持; 也就是说,修改缓冲区将导致数组被修改,反之亦然。 新缓冲区的容量和限制将为array.length ,其位置将为零,并且其标记将不确定。 backing array将是给定的阵列,其 array offset将为零。

Parameters
array byte: The array that will back this buffer
Returns
ByteBuffer The new byte buffer

wrap

Added in API level 1
ByteBuffer wrap (byte[] array, 
                int offset, 
                int length)

将一个字节数组包装到缓冲区中。

新缓冲区将由给定的字节数组支持; 也就是说,修改缓冲区将导致数组被修改,反之亦然。 新缓冲区容量为array.length ,位置为offset ,限制为offset + length ,其标记未定义。 它的 backing array将是给定的数组,其 array offset将为零。

Parameters
array byte: The array that will back the new buffer
offset int: The offset of the subarray to be used; must be non-negative and no larger than array.length. The new buffer's position will be set to this value.
length int: The length of the subarray to be used; must be non-negative and no larger than array.length - offset. The new buffer's limit will be set to offset + length.
Returns
ByteBuffer The new byte buffer
Throws
IndexOutOfBoundsException If the preconditions on the offset and length parameters do not hold

Hooray!