Compartilhar via


ByteBuffer Classe

Definição

Um buffer de bytes.

[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
Herança
ByteBuffer
Derivado
Atributos
Implementações

Comentários

Um buffer de bytes.

Essa classe define seis categorias de operações em buffers de bytes:

<ul>

<li>

Absoluto e relativo #get() <i>get</i> e #put(byte) <i>put</i> métodos que leem e gravam bytes únicos;

</li>

<li>

Métodos relativos #get(byte[]) <i>bulk get</i> que transferem sequências contíguas de bytes desse buffer para uma matriz;

</li>

<li>

Métodos relativos #put(byte[]) <i>bulk put</i> que transferem sequências contíguas de bytes de uma matriz de bytes ou de algum outro buffer de bytes para esse buffer;

</li>

<li>

Absolutos e relativos #getChar() <i>get</i> e #putChar(char) <i>put</i> métodos que leem e gravam valores de outros tipos primitivos, traduzindo-os de e para sequências de bytes em uma determinada ordem de bytes;

</li>

<li>

Métodos para criar buffers de exibição, que permitem que um buffer de bytes seja visualizado como um buffer contendo valores de algum outro tipo primitivo;

</li>

<li>

Métodos para #compact compacting, #duplicate duplicatinge #slice slicing um buffer de bytes.

</li>

</ul>

Os buffers de bytes podem ser criados pelo #allocate <i>allocation</i>, que aloca espaço para os buffers

ou por #wrap(byte[]) <i>wrapping</i> uma matriz de bytes existente em um buffer.

"direto"><h2> Buffers <diretos vs. não diretos /h2>

Um buffer de bytes é direto ou não direto. Dado um buffer de bytes direto, a máquina virtual Java fará um melhor esforço para executar operações de E/S nativas diretamente sobre ela. Ou seja, ele tentará evitar copiar o conteúdo do buffer para (ou de) um buffer intermediário antes (ou depois) de cada invocação de uma das operações de E/S nativas do sistema operacional subjacente.

Um buffer de byte direto pode ser criado invocando o #allocateDirect(int) allocateDirect método de fábrica dessa classe. Os buffers retornados por esse método normalmente têm custos de alocação e desalocação um pouco mais altos do que os buffers não diretos. O conteúdo dos buffers diretos pode residir fora do heap normal coletado de lixo e, portanto, seu impacto sobre o volume de memória de um aplicativo pode não ser óbvio. Portanto, recomenda-se que os buffers diretos sejam alocados principalmente para buffers grandes e de longa duração que estão sujeitos às operações de E/S nativas do sistema subjacente. Em geral, é melhor alocar buffers diretos somente quando eles produzem um ganho mensurável no desempenho do programa.

Um buffer de bytes direto também pode ser criado por java.nio.channels.FileChannel#map mapping uma região de um arquivo diretamente na memória. Uma implementação da plataforma Java pode, opcionalmente, suportar a criação de buffers de bytes diretos a partir de código nativo via JNI. Se uma instância de um desses tipos de buffers se referir a uma região inacessível da memória, uma tentativa de acessar essa região não alterará o conteúdo do buffer e fará com que uma exceção não especificada seja lançada no momento do acesso ou em algum momento posterior.

Se um buffer de bytes é direto ou não direto pode ser determinado invocando seu #isDirect isDirect método. Esse método é fornecido para que o gerenciamento explícito de buffer possa ser feito em código de desempenho crítico.

"bin"><h2> Acesso a dados <binários /h2>

Essa classe define métodos para ler e gravar valores de todos os outros tipos primitivos, exceto boolean. Os valores primitivos são convertidos para (ou de) sequências de bytes de acordo com a ordem atual de bytes do buffer, que pode ser recuperada e modificada por meio dos #order order métodos. Ordens de bytes específicas são representadas por instâncias da ByteOrder classe. A ordem inicial de um buffer de bytes é sempre ByteOrder#BIG_ENDIAN BIG_ENDIAN.

Para acesso a dados binários heterogêneos, ou seja, sequências de valores de diferentes tipos, essa classe define uma família de métodos get e put absolutos e relativos para cada tipo. Para valores de ponto flutuante de 32 bits, por exemplo, essa classe define:

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

Os métodos correspondentes são definidos para os tipos char, short, int, longe double. Os parâmetros de índice dos métodos absolutos get e put são em termos de bytes e não do tipo que está sendo lido ou gravado.

"Visualizações">

Para acesso a dados binários homogêneos, ou seja, sequências de valores do mesmo tipo, essa classe define métodos que podem criar exibições de um determinado buffer de bytes. Um buffer de exibição é simplesmente outro buffer cujo conteúdo é apoiado pelo buffer de bytes. As alterações no conteúdo do buffer de bytes serão visíveis no buffer de exibição e vice-versa; Os valores de posição, limite e marca dos dois buffers são independentes. O #asFloatBuffer() asFloatBuffer método, por exemplo, cria uma instância da classe que é apoiada pelo buffer de FloatBuffer bytes no qual o método é chamado. Os métodos de criação de exibição correspondentes são definidos para os tipos char, short, int, longe double.

Os buffers de exibição têm três vantagens importantes sobre as famílias de métodos get e put específicos do tipo descritos acima:

<ul>

<li>

Um buffer de exibição é indexado não em termos de bytes, mas sim em termos do tamanho específico do tipo de seus valores;

</li>

<li>

Um buffer de exibição fornece métodos get e put em massa relativo que podem transferir sequências contíguas de valores entre um buffer e uma matriz ou algum outro buffer do mesmo tipo;

</li>

<li>

Um buffer de exibição é potencialmente muito mais eficiente porque será direto se, e somente se, seu buffer de byte de backup for direto.

</li>

</ul>

A ordem de bytes de um buffer de exibição é fixada para ser a de seu buffer de bytes no momento em que o modo de exibição é criado.

<h2> Encadeamento de <invocação /h2>

Os métodos nessa classe que, de outra forma, não têm um valor a ser retornado são especificados para retornar o buffer no qual são invocados. Isso permite que as chamadas de método sejam encadeadas.

A sequência de depoimentos

<blockquote>

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

</blockquote>

pode, por exemplo, ser substituído pela declaração única

<blockquote>

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

</blockquote>

Adicionado em 1.4.

Documentação Java para java.nio.ByteBuffer.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Construtores

ByteBuffer(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo tempo de execução.

Propriedades

Char

Retorna o caractere na posição atual e aumenta a posição em 2.

Class

Retorna a classe de tempo de execução deste Object.

(Herdado de Object)
Double

Retorna o duplo na posição atual e aumenta a posição em 8.

Float

Retorna o float na posição atual e aumenta a posição em 4.

Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
HasArray

Informa se esse buffer é ou não apoiado por uma matriz de bytes acessível.

HasRemaining

Informa se há elementos entre a posição atual e o limite.

(Herdado de Buffer)
Int

Retorna o int na posição atual e aumenta a posição em 4.

IsDirect

Retorna true se este for um buffer direto.

(Herdado de Buffer)
IsReadOnly

Indica se esse buffer é somente leitura.

(Herdado de Buffer)
JniIdentityHashCode

Um buffer de bytes.

(Herdado de Object)
JniPeerMembers

Um buffer de bytes.

Long

Retorna o longo na posição atual e aumenta a posição em 8.

PeerReference

Um buffer de bytes.

(Herdado de Object)
Short

Retorna o short na posição atual e aumenta a posição em 2.

ThresholdClass

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

Métodos

AlignedSlice(Int32)

Cria um novo buffer de bytes cujo conteúdo é uma subsequência compartilhada e alinhada do conteúdo desse buffer.

AlignmentOffset(Int32, Int32)

Retorna o endereço de memória, apontando para o byte no índice fornecido, modula o tamanho da unidade dada.

Allocate(Int32)

Aloca um novo buffer de bytes.

AllocateDirect(Int32)

Aloca um novo buffer de bytes diretos.

ArrayOffset()

Retorna o deslocamento dentro da matriz de suporte desse buffer do primeiro elemento do buffer   (operação opcional).

AsCharBuffer()

Cria uma exibição desse buffer de bytes como um buffer de caracteres.

AsDoubleBuffer()

Cria uma exibição desse buffer de bytes como um buffer duplo.

AsFloatBuffer()

Cria uma exibição desse buffer de bytes como um buffer flutuante.

AsIntBuffer()

Cria uma exibição desse buffer de bytes como um buffer int.

AsLongBuffer()

Cria uma exibição desse buffer de bytes como um buffer longo.

AsReadOnlyBuffer()

Cria um novo buffer de bytes somente leitura que compartilha o conteúdo desse buffer.

AsShortBuffer()

Cria uma exibição desse buffer de bytes como um buffer curto.

Capacity()

Retorna a capacidade desse buffer.

(Herdado de Buffer)
Clear()

Limpa esse buffer.

(Herdado de Buffer)
Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Compact()

Compacta este buffer   (operação opcional).

CompareTo(ByteBuffer)

Compara esse buffer com outro.

Dispose()

Um buffer de bytes.

(Herdado de Object)
Dispose(Boolean)

Um buffer de bytes.

(Herdado de Object)
Duplicate()

Cria um novo buffer de bytes que compartilha o conteúdo desse buffer.

Equals(Object)

Indica se algum outro objeto é "igual" a este.

(Herdado de Object)
Flip()

Inverte esse buffer.

(Herdado de Buffer)
Get()

Método get relativo.

Get(Byte[])

Método de obtenção em massa relativa.

Get(Byte[], Int32, Int32)

Método de obtenção em massa relativa.

Get(Int32)

Método de obtenção absoluta.

GetChar(Int32)

Método absolute get para ler um valor char.

GetDirectBufferAddress()

Um buffer de bytes.

(Herdado de Buffer)
GetDouble(Int32)

Método get absoluto para ler um valor duplo.

GetFloat(Int32)

Método absolute get para ler um valor float.

GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
GetInt(Int32)

Método absolute get para ler um valor int.

GetLong(Int32)

Método de obtenção absoluta para leitura de um valor longo.

GetShort(Int32)

Método de obtenção absoluta para ler um valor curto.

JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Limit()

Retorna o limite desse buffer.

(Herdado de Buffer)
Limit(Int32)

Define o limite desse buffer.

(Herdado de Buffer)
Mark()

Define a marca desse buffer em sua posição.

(Herdado de Buffer)
Mismatch(ByteBuffer)

Localiza e retorna o índice relativo da primeira incompatibilidade entre esse buffer e um determinado buffer.

Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
Order()

Recupera a ordem de bytes desse buffer.

Order(ByteOrder)

Modifica a ordem de bytes desse buffer.

Position()

Retorna a posição desse buffer.

(Herdado de Buffer)
Position(Int32)

Define a posição desse buffer.

(Herdado de Buffer)
Put(Byte[])

Método de colocação em massa relativa   (operação opcional).

Put(Byte[], Int32, Int32)

Método de colocação em massa relativa   (operação opcional).

Put(ByteBuffer)

Método de colocação em massa relativa   (operação opcional).

Put(Int32, SByte)

Método de colocação absoluta   (operação opcional).

Put(SByte)

Método de colocação relativa   (operação opcional).

PutChar(Char)

Método de put relativo para escrever um valor de caractere   (operação opcional).

PutChar(Int32, Char)

Método de put absoluto para escrever um valor de char   (operação opcional).

PutDouble(Double)

Método de put relativo para escrever um valor duplo   (operação opcional).

PutDouble(Int32, Double)

Método de put absoluto para escrever um valor duplo   (operação opcional).

PutFloat(Int32, Single)

Método de put absoluto para escrever um valor float   (operação opcional).

PutFloat(Single)

Método de put relativo para escrever um valor float   (operação opcional).

PutInt(Int32)

Método de put relativo para escrever um valor int   (operação opcional).

PutInt(Int32, Int32)

Método de put absoluto para escrever um valor int   (operação opcional).

PutLong(Int32, Int64)

Método de put absoluto para escrever um valor longo   (operação opcional).

PutLong(Int64)

Método de put relativo para escrever um valor longo   (operação opcional).

PutShort(Int16)

Método de put relativo para escrever um valor curto   (operação opcional).

PutShort(Int32, Int16)

Método de put absoluto para escrever um valor curto   (operação opcional).

Remaining()

Retorna o número de elementos entre a posição atual e o limite.

(Herdado de Buffer)
Reset()

Redefine a posição desse buffer para a posição marcada anteriormente.

(Herdado de Buffer)
Rewind()

Rebobina esse buffer.

(Herdado de Buffer)
SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle.

(Herdado de Object)
Slice()

Cria um novo buffer de bytes cujo conteúdo é uma subsequência compartilhada do conteúdo desse buffer.

Slice(Int32, Int32)

Cria um novo buffer de bytes cujo conteúdo é uma subsequência compartilhada do conteúdo desse buffer.

Slice(Int32, Int32)

Cria um novo buffer cujo conteúdo é uma subsequência compartilhada do conteúdo desse buffer.

(Herdado de Buffer)
ToArray<T>()

Um buffer de bytes.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Um buffer de bytes.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em notificado</em> ou <em>interrompido</em>>.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wrap(Byte[])

Encapsula uma matriz de bytes em um buffer.

Wrap(Byte[], Int32, Int32)

Encapsula uma matriz de bytes em um buffer.

Implantações explícitas de interface

IComparable.CompareTo(Object)

Um buffer de bytes.

IJavaPeerable.Disposed()

Um buffer de bytes.

(Herdado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Um buffer de bytes.

(Herdado de Object)
IJavaPeerable.Finalized()

Um buffer de bytes.

(Herdado de Object)
IJavaPeerable.JniManagedPeerState

Um buffer de bytes.

(Herdado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Um buffer de bytes.

(Herdado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Um buffer de bytes.

(Herdado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Um buffer de bytes.

(Herdado de Object)

Métodos de Extensão

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada em tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

Um buffer de bytes.

GetJniTypeName(IJavaPeerable)

Um buffer de bytes.

Aplica-se a