ByteBuffer Класс

Определение

Буфер байтов.

[Android.Runtime.Register("java/nio/ByteBuffer", DoNotGenerateAcw=true)]
public abstract class ByteBuffer : Java.Nio.Buffer, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IComparable
[<Android.Runtime.Register("java/nio/ByteBuffer", DoNotGenerateAcw=true)>]
type ByteBuffer = class
    inherit Buffer
    interface IComparable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Наследование
ByteBuffer
Производный
Атрибуты
Реализации

Комментарии

Буфер байтов.

Этот класс определяет шесть категорий операций с буферами байтов:

<ul>

<Литий>

Абсолютные и относительные #get() <i>get</i> методы и #put(byte) <i>put</i> , которые считывают и записывают одиночные байты;

</Литий>

<Литий>

Относительные #get(byte[]) <i>bulk get</i> методы, которые передают непрерывные последовательности байтов из этого буфера в массив;

</Литий>

<Литий>

Относительные #put(byte[]) <i>bulk put</i> методы, которые передают смежные последовательности байтов из массива байтов или другого буфера байтов в этот буфер;

</Литий>

<Литий>

Абсолютные и относительные #getChar() <i>get</i> методы и #putChar(char) <i>put</i> , которые считывают и записывают значения других примитивных типов, претворяя их в последовательности байтов и из них в определенном порядке байтов;

</Литий>

<Литий>

Методы для создания буферов представлений, которые позволяют рассматривать буфер байтов как буфер, содержащий значения другого примитивного типа; И

</Литий>

<Литий>

Методы для #compact compacting, #duplicate duplicatingи #slice slicing буфера байтов.

</Литий>

</ul>

Буферы байтов можно создать либо с помощью #allocate <i>allocation</i>, который выделяет пространство для буфера

содержимое или по #wrap(byte[]) <i>wrapping</i> существующему массиву байтов в буфер.

"direct"><h2> Direct и не напрямую буферы </h2>

Буфер байтов является прямым или не напрямую. При использовании буфера с прямыми байтами виртуальная машина Java приложит все усилия для выполнения собственных операций ввода-вывода непосредственно на ней. То есть он попытается избежать копирования содержимого буфера в (или из) промежуточного буфера до (или после) каждого вызова одной из собственных операций ввода-вывода операционной системы.

Буфер прямых байтов можно создать путем #allocateDirect(int) allocateDirect вызова фабричного метода этого класса. Буферы, возвращаемые этим методом, обычно имеют несколько более высокие затраты на выделение и освобождение, чем не напрямую буферы. Содержимое прямых буферов может находиться за пределами обычной кучи, собранной мусором, поэтому их влияние на объем памяти приложения может быть неочевидным. Поэтому рекомендуется выделять прямые буферы в первую очередь для больших буферов с длительным сроком существования, к которым применяются собственные операции ввода-вывода базовой системы. Как правило, прямые буферы лучше выделять только в том случае, если они дают измеряемое увеличение производительности программы.

Буфер прямых байтов также может быть создан java.nio.channels.FileChannel#map mapping областью файла непосредственно в памяти. Реализация платформы Java может при необходимости поддерживать создание буферов прямых байтов из машинного кода через JNI. Если экземпляр одного из этих типов буферов ссылается на недоступный регион памяти, то попытка получить доступ к этой области не изменит содержимое буфера и вызовет неуказаемое исключение либо во время доступа, либо в некоторое время позже.

Является ли буфер байтов прямым или не прямым, можно определить, вызвав его #isDirect isDirect метод . Этот метод предоставляется для явного управления буфером в коде, критическом для производительности.

"bin"><h2> Доступ к двоичным данным </h2>

Этот класс определяет методы для чтения и записи значений всех других примитивных типов, за исключением boolean. Примитивные значения преобразуются в последовательности байтов (или из) в соответствии с текущим порядком байтов буфера, который можно извлечь и изменить с помощью #order order методов . Конкретные порядки байтов представлены экземплярами ByteOrder класса . Начальный порядок буфера байтов всегда ByteOrder#BIG_ENDIAN BIG_ENDIANравен .

Для доступа к разнородным двоичным данным, т. е. последовательности значений разных типов, этот класс определяет семейство абсолютных и относительных методов get и put для каждого типа. Например, для 32-разрядных значений с плавающей запятой этот класс определяет следующее:

<blockquote>

float  {@link #getFloat()}
            float  {@link #getFloat(int) getFloat(int index)}
             void  {@link #putFloat(float) putFloat(float f)}
             void  {@link #putFloat(int,float) putFloat(int index, float f)}

</blockquote>

Соответствующие методы определяются для типов char, short, int, longи double. Параметры индекса абсолютных методов get и put относятся к байтам, а не к типу, считываемого или записываемого.

"views">

Для доступа к однородным двоичным данным, т. е. последовательности значений одного типа, этот класс определяет методы, которые могут создавать представления заданного буфера байтов. Буфер представления — это просто другой буфер, содержимое которого поддерживается буфером байтов. Изменения в содержимом буфера байтов будут видны в буфере представления и наоборот; значения позиции, предела и метки двух буферов независимы. Например #asFloatBuffer() asFloatBuffer , метод создает экземпляр FloatBuffer класса , который поддерживается буфером байтов, к которому вызывается метод . Соответствующие методы создания представлений определяются для типов char, short, int, longи double.

Буферы представлений имеют три важных преимущества по сравнению с семействами описанных выше методов get и put для конкретных типов:

<ul>

<Литий>

Буфер представления индексируется не с точки зрения байтов, а с точки зрения конкретного типа размера его значений;

</Литий>

<Литий>

Буфер представления предоставляет относительные методы массового получения и вставки , которые могут передавать непрерывные последовательности значений между буфером и массивом или другим буфером того же типа; И

</Литий>

<Литий>

Буфер представления потенциально гораздо эффективнее, так как он будет прямым, если и только в том случае, если резервный буфер байтов является прямым.

</Литий>

</ul>

Порядок байтов буфера представления фиксирован как его буфер байтов на момент создания представления.

<h2> Цепочка <вызова /h2>

Методы в этом классе, которые в противном случае не имеют возвращаемого значения, указываются для возврата буфера, по которому они вызываются. Это позволяет связывать вызовы методов в цепочку.

Последовательность инструкций

<blockquote>

bb.putInt(0xCAFEBABE);
            bb.putShort(3);
            bb.putShort(45);

</blockquote>

можно, например, заменить одной инструкцией

<blockquote>

bb.putInt(0xCAFEBABE).putShort(3).putShort(45);

</blockquote>

Добавлено в версии 1.4.

Документация по Java для java.nio.ByteBuffer.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Конструкторы

ByteBuffer(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Свойства

Char

Возвращает символ char в текущей позиции и увеличивает позицию на 2.

Class

Возвращает класс среды выполнения данного объекта Object.

(Унаследовано от Object)
Double

Возвращает значение типа double в текущей позиции и увеличивает позицию на 8.

Float

Возвращает значение float в текущей позиции и увеличивает позицию на 4.

Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
HasArray

Указывает, поддерживается ли этот буфер доступным массивом байтов.

HasRemaining

Указывает, есть ли элементы между текущей позицией и ограничением.

(Унаследовано от Buffer)
Int

Возвращает значение int в текущей позиции и увеличивает позицию на 4.

IsDirect

Возвращает значение true, если это прямой буфер.

(Унаследовано от Buffer)
IsReadOnly

Указывает, доступен ли этот буфер только для чтения.

(Унаследовано от Buffer)
JniIdentityHashCode

Буфер байтов.

(Унаследовано от Object)
JniPeerMembers

Буфер байтов.

Long

Возвращает значение long в текущей позиции и увеличивает позицию на 8.

PeerReference

Буфер байтов.

(Унаследовано от Object)
Short

Возвращает значение short в текущей позиции и увеличивает позицию на 2.

ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

AlignedSlice(Int32)

Создает новый буфер байтов, содержимое которого является общей и выровненной подсетью содержимого этого буфера.

AlignmentOffset(Int32, Int32)

Возвращает адрес памяти, указывающий на байт по заданному индексу, модуль заданного размера единицы.

Allocate(Int32)

Выделяет новый буфер байтов.

AllocateDirect(Int32)

Выделяет новый буфер прямых байтов.

ArrayOffset()

Возвращает смещение в резервном массиве этого буфера первого элемента буфера   (необязательная операция)..

AsCharBuffer()

Создает представление этого буфера байтов в виде буфера символов.

AsDoubleBuffer()

Создает представление этого буфера байтов в виде двойного буфера.

AsFloatBuffer()

Создает представление этого буфера байтов в виде буфера с плавающей точкой.

AsIntBuffer()

Создает представление этого буфера байтов в виде буфера int.

AsLongBuffer()

Создает представление этого буфера байтов в виде длинного буфера.

AsReadOnlyBuffer()

Создает новый буфер байтов только для чтения, который совместно использует содержимое этого буфера.

AsShortBuffer()

Создает представление этого буфера байтов в виде короткого буфера.

Capacity()

Возвращает емкость этого буфера.

(Унаследовано от Buffer)
Clear()

Очищает этот буфер.

(Унаследовано от Buffer)
Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Compact()

Сжимает этот буфер   (необязательная операция)..

CompareTo(ByteBuffer)

Сравнивает этот буфер с другим.

Dispose()

Буфер байтов.

(Унаследовано от Object)
Dispose(Boolean)

Буфер байтов.

(Унаследовано от Object)
Duplicate()

Создает новый буфер байтов, который использует содержимое этого буфера.

Equals(Object)

Указывает, равен ли какой-то другой объект этому объекту.

(Унаследовано от Object)
Flip()

Переворачивает этот буфер.

(Унаследовано от Buffer)
Get()

Относительный метод get .

Get(Byte[])

Относительный метод массового получения .

Get(Byte[], Int32, Int32)

Относительный метод массового получения .

Get(Int32)

Абсолютный метод get .

GetChar(Int32)

Метод абсолютного получения для считывания значения char.

GetDirectBufferAddress()

Буфер байтов.

(Унаследовано от Buffer)
GetDouble(Int32)

Метод абсолютного получения для чтения двойного значения.

GetFloat(Int32)

Метод абсолютного получения для считывания значения с плавающей точкой.

GetHashCode()

Возвращает значение хэш-кода для объекта.

(Унаследовано от Object)
GetInt(Int32)

Метод абсолютного получения для чтения значения int.

GetLong(Int32)

Метод абсолютного получения для чтения длинного значения.

GetShort(Int32)

Метод абсолютного получения для чтения короткого значения.

JavaFinalize()

Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект .

(Унаследовано от Object)
Limit()

Возвращает предел этого буфера.

(Унаследовано от Buffer)
Limit(Int32)

Задает предел этого буфера.

(Унаследовано от Buffer)
Mark()

Задает метку этого буфера в его позиции.

(Унаследовано от Buffer)
Mismatch(ByteBuffer)

Находит и возвращает относительный индекс первого несоответствия между этим буфером и заданным буфером.

Notify()

Пробуждение одного потока, ожидающего на мониторе этого объекта.

(Унаследовано от Object)
NotifyAll()

Активирует все потоки, ожидающие на мониторе этого объекта.

(Унаследовано от Object)
Order()

Извлекает порядок байтов этого буфера.

Order(ByteOrder)

Изменяет порядок байтов этого буфера.

Position()

Возвращает позицию этого буфера.

(Унаследовано от Buffer)
Position(Int32)

Задает положение этого буфера.

(Унаследовано от Buffer)
Put(Byte[])

Относительный метод bulk put   (необязательная операция)..

Put(Byte[], Int32, Int32)

Относительный метод bulk put   (необязательная операция)..

Put(ByteBuffer)

Относительный метод bulk put   (необязательная операция)..

Put(Int32, SByte)

Метод absolute put   (необязательная операция)..

Put(SByte)

Относительный метод put   (необязательная операция)..

PutChar(Char)

Метод относительного put для записи значения char   (необязательная операция)..

PutChar(Int32, Char)

Метод absolute put для записи значения символа   (необязательная операция)..

PutDouble(Double)

Метод относительного put для записи двойного значения   (необязательная операция)..

PutDouble(Int32, Double)

Метод absolute put для записи двойного значения   (необязательная операция)..

PutFloat(Int32, Single)

Метод absolute put для записи значения float   (необязательная операция)..

PutFloat(Single)

Метод относительного put для записи значения float   (необязательная операция)..

PutInt(Int32)

Относительный метод put для записи значения int   (необязательная операция)..

PutInt(Int32, Int32)

Метод absolute put для записи значения int   (необязательная операция)..

PutLong(Int32, Int64)

Абсолютный метод put для записи длинного значения   (необязательная операция)..

PutLong(Int64)

Метод относительного put для записи длинного значения   (необязательная операция)..

PutShort(Int16)

Метод относительного put для записи короткого значения   (необязательная операция)..

PutShort(Int32, Int16)

Метод absolute put для записи короткого значения   (необязательная операция)..

Remaining()

Возвращает количество элементов между текущей позицией и ограничением.

(Унаследовано от Buffer)
Reset()

Сбрасывает позицию этого буфера до ранее помеченной позиции.

(Унаследовано от Buffer)
Rewind()

Перемотка этого буфера.

(Унаследовано от Buffer)
SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
Slice()

Создает новый буфер байтов, содержимое которого является общей вложенностью содержимого этого буфера.

Slice(Int32, Int32)

Создает новый буфер байтов, содержимое которого является общей вложенностью содержимого этого буфера.

Slice(Int32, Int32)

Создает новый буфер, содержимое которого является общей вложенностью содержимого этого буфера.

(Унаследовано от Buffer)
ToArray<T>()

Буфер байтов.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Буфер байтов.

(Унаследовано от Object)
Wait()

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

(Унаследовано от Object)
Wait(Int64)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)
Wait(Int64, Int32)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)
Wrap(Byte[])

Заключает массив байтов в буфер.

Wrap(Byte[], Int32, Int32)

Заключает массив байтов в буфер.

Явные реализации интерфейса

IComparable.CompareTo(Object)

Буфер байтов.

IJavaPeerable.Disposed()

Буфер байтов.

(Унаследовано от Object)
IJavaPeerable.DisposeUnlessReferenced()

Буфер байтов.

(Унаследовано от Object)
IJavaPeerable.Finalized()

Буфер байтов.

(Унаследовано от Object)
IJavaPeerable.JniManagedPeerState

Буфер байтов.

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Буфер байтов.

(Унаследовано от Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Буфер байтов.

(Унаследовано от Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Буфер байтов.

(Унаследовано от Object)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверенное средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Буфер байтов.

GetJniTypeName(IJavaPeerable)

Буфер байтов.

Применяется к