Язык

ByteBuffer Класс

Определение

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

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

Комментарии

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

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

<Ул>

<li>

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

</li>

<li>

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

</li>

<li>

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

</li>

<li>

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

</li>

<li>

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

</li>

<li>

Метод для #compact compacting буфера байтов.

</li>

</ul>

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

содержимое или существующий #wrap(byte[]) <i>wrapping</i> массив байтов {#if[char]?or&32; string} в буфер.

"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.

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

<Ул>

<li>

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

</li>

<li>

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

</li>

<li>

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

</li>

</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.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

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

Имя. Описание
ByteBuffer(IntPtr, JniHandleOwnership)

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

Свойства

Имя. Описание
Char

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

Class

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

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

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

Float

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

Handle

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

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

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

HasRemaining

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

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

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

IsDirect

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

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

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

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

Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия.

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

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

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

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

Long

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

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

(Унаследовано от 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)

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

Construct(JniObjectReference, JniObjectReferenceOptions)

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

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

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

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

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

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

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

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

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

Equals(Object)

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

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

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

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

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

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

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

Get(Byte[], Int32, Int32)

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

Get(Byte[])

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

Get(Int32, Byte[], Int32, Int32)

Абсолютный метод массового получения .

Get(Int32, Byte[])

Абсолютный метод массового получения .

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[], Int32, Int32)

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

Put(Byte[])

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

Put(ByteBuffer)

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

Put(Int32, Byte[], Int32, Int32)

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

Put(Int32, Byte[])

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

Put(Int32, ByteBuffer, Int32, Int32)

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

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, Int32)

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

PutInt(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)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

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

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

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

Slice(Int32, Int32)

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

ToArray<T>()

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

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

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

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

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

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

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

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

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

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

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

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

Упаковывает массив байтов в буфер.

Wrap(Byte[])

Упаковывает массив байтов в буфер.

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

Имя. Описание
IComparable.CompareTo(Object)

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

IJavaPeerable.Disposed()

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

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

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

(Унаследовано от JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

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

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

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

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

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

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

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

(Унаследовано от JavaObject)
IJavaPeerable.UnregisterFromRuntime()

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

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

Имя. Описание
GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

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