ByteBuffer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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 duplicating
e #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
, long
e 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
, long
e 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 |
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. |