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
- Наследование
- Производный
- Атрибуты
- Реализации
Комментарии
Буфер байтов.
Этот класс определяет шесть категорий операций при буферах байтов:
<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 Access к двоичным данным </h2>>
Этот класс определяет методы для чтения и записи значений всех других примитивных типов, кроме boolean
. Примитивные значения претворяются в последовательности байтов (или из) в соответствии с текущим порядком байтов буфера, которые могут быть извлечены и изменены с помощью #order order
методов. Конкретные порядки байтов представлены экземплярами ByteOrder
класса. Начальный порядок буфера байтов всегда ByteOrder#BIG_ENDIAN BIG_ENDIAN
.
Для доступа к разнородным двоичным данным, то есть последовательности значений разных типов, этот класс определяет семейство абсолютных и относительных методов получения и помещать методы для каждого типа. Например, для 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 являются с точки зрения байтов, а не типа, считываемого или записанного.
"представления">
Для доступа к однородным двоичным данным, то есть последовательности значений одного типа, этот класс определяет методы, которые могут создавать представления заданного буфера байтов. Буфер представления — это просто другой буфер, содержимое которого поддерживается буфером байтов. Изменения содержимого буфера байтов будут отображаться в буфере представления, и наоборот; Положение, ограничение и метки двух буферов являются независимыми. Например #asFloatBuffer() asFloatBuffer
, метод создает экземпляр FloatBuffer
класса, который поддерживается буфером байтов, на котором вызывается метод. Соответствующие методы создания представлений определяются для типов char
, , short
, int
и long
double
.
Буферы представления имеют три важных преимущества по сравнению с семействами типов получения и установки методов, описанных выше:
<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
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Конструкторы
ByteBuffer(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
Свойства
Char |
Возвращает символ в текущей позиции и увеличивает позицию на 2. |
Class |
Возвращает класс среды выполнения этого |
Double |
Возвращает двойное значение в текущей позиции и увеличивает позицию на 8. |
Float |
Возвращает значение float в текущей позиции и увеличивает позицию на 4. |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
HasArray |
Указывает, поддерживается ли этот буфер доступным массивом байтов. |
HasRemaining |
Указывает, есть ли элементы между текущей позицией и ограничением. (Унаследовано от Buffer) |
Int |
Возвращает int в текущей позиции и увеличивает позицию на 4. |
IsDirect |
Возвращает значение true, если это прямой буфер. (Унаследовано от Buffer) |
IsReadOnly |
Указывает, доступен ли этот буфер только для чтения. (Унаследовано от Buffer) |
JniIdentityHashCode |
Буфер байтов. (Унаследовано от Object) |
JniPeerMembers |
Буфер байтов. |
Long |
Возвращает длину в текущей позиции и увеличивает позицию на 8. |
PeerReference |
Буфер байтов. (Унаследовано от Object) |
Short |
Возвращает короткое значение текущей позиции и увеличивает позицию на 2. |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
AlignedSlice(Int32) |
Создает новый буфер байтов, содержимое которого является общим и выровненным вложенным значением содержимого этого буфера. |
AlignmentOffset(Int32, Int32) |
Возвращает адрес памяти, указывающий на байт по указанному индексу, модулирует заданный размер единицы. |
Allocate(Int32) |
Выделяет новый буфер байтов. |
AllocateDirect(Int32) |
Выделяет новый прямой байтовый буфер. |
ArrayOffset() |
Возвращает смещение в резервном массиве этого буфера первого элемента буфера >(необязательная операция). |
AsCharBuffer() |
Создает представление этого буфера байтов в виде буфера char. |
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[]) |
Относительный метод массового положить > >(необязательная операция). |
Put(Byte[], Int32, Int32) |
Относительный метод массового положить > >(необязательная операция). |
Put(ByteBuffer) |
Относительный метод массового положить > >(необязательная операция). |
Put(Int32, SByte) |
Абсолютный метод put > >(необязательная операция). |
Put(SByte) |
Относительный метод put > >(необязательная операция). |
PutChar(Char) |
Относительный метод put для написания значения char> >(необязательная операция). |
PutChar(Int32, Char) |
Абсолютный метод put для написания значения char >(необязательная операция). |
PutDouble(Double) |
Относительный метод put для записи двойного значения >(необязательная операция). |
PutDouble(Int32, Double) |
Абсолютный метод put для записи двойного значения >(необязательная операция). |
PutFloat(Int32, Single) |
Абсолютный метод put для записи значения с плавающей запятой> >(необязательная операция). |
PutFloat(Single) |
Относительный метод put для записи значения с плавающей плавающей запятой> >(необязательная операция). |
PutInt(Int32) |
Относительный метод put для записи значения int >(необязательная операция). |
PutInt(Int32, Int32) |
Абсолютный метод put для написания значения int >(необязательная операция). |
PutLong(Int32, Int64) |
Абсолютный метод put для написания длинного значения> >(необязательная операция). |
PutLong(Int64) |
Относительный метод put для написания длинного значения> >(необязательная операция). |
PutShort(Int16) |
Относительный метод put для написания короткого значения> >(необязательная операция). |
PutShort(Int32, Int16) |
Абсолютный метод 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 или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>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) |
Буфер байтов. |