Compartilhar via


ObjectOutputStream Classe

Definição

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

[Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)]
public class ObjectOutputStream : Java.IO.OutputStream, IDisposable, Java.Interop.IJavaPeerable, Java.IO.IObjectOutput
[<Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)>]
type ObjectOutputStream = class
    inherit OutputStream
    interface IObjectOutput
    interface IDataOutput
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Herança
ObjectOutputStream
Atributos
Implementações

Comentários

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream. Os objetos podem ser lidos (reconstituídos) usando um ObjectInputStream. O armazenamento persistente de objetos pode ser realizado usando um arquivo para o fluxo. Se o fluxo for um fluxo de soquete de rede, os objetos poderão ser reconstituídos em outro host ou em outro processo.

Somente objetos que suportam a interface java.io.Serializable podem ser gravados em fluxos. A classe de cada objeto serializável é codificada, incluindo o nome da classe e a assinatura da classe, os valores dos campos e matrizes do objeto e o fechamento de quaisquer outros objetos referenciados a partir dos objetos iniciais.

O método writeObject é usado para gravar um objeto no fluxo. Qualquer objeto, incluindo Strings e matrizes, é escrito com writeObject. Vários objetos ou primitivas podem ser gravados no fluxo. Os objetos devem ser lidos de volta do ObjectInputstream correspondente com os mesmos tipos e na mesma ordem em que foram gravados.

Os tipos de dados primitivos também podem ser gravados no fluxo usando os métodos apropriados de DataOutput. As cadeias de caracteres também podem ser escritas usando o método writeUTF.

O mecanismo de serialização padrão para um objeto grava a classe do objeto, a assinatura de classe e os valores de todos os campos não transitórios e não estáticos. Referências a outros objetos (exceto em campos transitórios ou estáticos) fazem com que esses objetos também sejam gravados. Várias referências a um único objeto são codificadas usando um mecanismo de compartilhamento de referência para que os gráficos de objetos possam ser restaurados para a mesma forma de quando o original foi escrito.

Por exemplo, para escrever um objeto que pode ser lido pelo exemplo em ObjectInputStream: <br>

FileOutputStream fos = new FileOutputStream("t.tmp");
                 ObjectOutputStream oos = new ObjectOutputStream(fos);

                 oos.writeInt(12345);
                 oos.writeObject("Today");
                 oos.writeObject(new Date());

                 oos.close();

As classes que exigem tratamento especial durante o processo de serialização e desserialização devem implementar métodos especiais com estas assinaturas exatas: <br>

private void readObject(java.io.ObjectInputStream stream)
                throws IOException, ClassNotFoundException;
            private void writeObject(java.io.ObjectOutputStream stream)
                throws IOException
            private void readObjectNoData()
                throws ObjectStreamException;

O método writeObject é responsável por gravar o estado do objeto para sua classe específica para que o método readObject correspondente possa restaurá-lo. O método não precisa se preocupar com o estado pertencente às superclasses ou subclasses do objeto. O estado é salvo gravando os campos individuais no ObjectOutputStream usando o método writeObject ou usando os métodos para tipos de dados primitivos suportados por DataOutput.

A serialização não grava os campos de nenhum objeto que não implemente a interface java.io.Serializable. Subclasses de objetos que não são serializáveis podem ser serializáveis. Nesse caso, a classe não serializável deve ter um construtor no-arg para permitir que seus campos sejam inicializados. Nesse caso, é responsabilidade da subclasse salvar e restaurar o estado da classe não serializável. É frequentemente o caso de que os campos dessa classe são acessíveis (público, pacote ou protegido) ou que existem métodos get e set que podem ser usados para restaurar o estado.

A serialização de um objeto pode ser impedida implementando os métodos writeObject e readObject que lançam o NotSerializableException. A exceção será capturada pelo ObjectOutputStream e abortará o processo de serialização.

A implementação da interface externalizável permite que o objeto assuma controle total sobre o conteúdo e o formato do formulário serializado do objeto. Os métodos da interface externalizável, writeExternal e readExternal, são chamados para salvar e restaurar o estado dos objetos. Quando implementados por uma classe, eles podem escrever e ler seu próprio estado usando todos os métodos de ObjectOutput e ObjectInput. É responsabilidade dos objetos lidar com qualquer controle de versão que ocorra.

As constantes de enum são serializadas de forma diferente dos objetos serializáveis ou externalizáveis comuns. A forma serializada de uma constante de enum consiste unicamente em seu nome; Os valores de campo da constante não são transmitidos. Para serializar uma constante de enum, ObjectOutputStream grava a cadeia de caracteres retornada pelo método name da constante. Como outros objetos serializáveis ou externalizáveis, as constantes de enum podem funcionar como os destinos das referências de retorno que aparecem posteriormente no fluxo de serialização. O processo pelo qual as constantes de enum são serializadas não pode ser personalizado; quaisquer métodos writeObject e writeReplace específicos da classe definidos por tipos de enum são ignorados durante a serialização. Da mesma forma, quaisquer declarações de campo serialPersistentFields ou serialVersionUID também são ignoradas - todos os tipos de enum têm um serialVersionUID fixo de 0L.

Os dados primitivos, excluindo campos serializáveis e dados externalizáveis, são gravados no ObjectOutputStream em registros de dados de bloco. Um registro de dados de bloco é composto por um cabeçalho e dados. O cabeçalho de dados de bloco consiste em um marcador e o número de bytes a seguir ao cabeçalho. Gravações de dados primitivos consecutivos são mescladas em um registro de dados de bloco. O fator de bloqueio usado para um registro de dados de bloco será de 1024 bytes. Cada registro de dados de bloco será preenchido até 1024 bytes, ou será gravado sempre que houver um término do modo de dados de bloco. As chamadas para os métodos ObjectOutputStream writeObject, defaultWriteObject e writeFields encerram inicialmente qualquer registro de dados de bloco existente.

Adicionado no JDK1.1.

Documentação Java para java.io.ObjectOutputStream.

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

ObjectOutputStream()

Forneça uma maneira para que as subclasses que estão reimplementando completamente ObjectOutputStream não precisem alocar dados privados usados apenas por essa implementação de ObjectOutputStream.

ObjectOutputStream(IntPtr, JniHandleOwnership)

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

ObjectOutputStream(Stream)

Cria um ObjectOutputStream que grava no OutputStream especificado.

Propriedades

Class

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

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
JniPeerMembers

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

PeerReference

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
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

AnnotateClass(Class)

Subclasses podem implementar esse método para permitir que os dados de classe sejam armazenados no fluxo.

AnnotateProxyClass(Class)

Subclasses podem implementar esse método para armazenar dados personalizados no fluxo junto com descritores para classes de proxy dinâmico.

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Close()

Fecha esse fluxo de saída e libera todos os recursos do sistema associados a esse fluxo.

(Herdado de OutputStream)
DefaultWriteObject()

Grave os campos não estáticos e não transitórios da classe atual nesse fluxo.

Dispose()

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
Dispose(Boolean)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
Drain()

Drene todos os dados armazenados em buffer em ObjectOutputStream.

EnableReplaceObject(Boolean)

Habilite o fluxo para fazer a substituição de objetos no fluxo.

Equals(Object)

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

(Herdado de Object)
Flush()

Libera esse fluxo de saída e força qualquer byte de saída em buffer a ser gravado.

(Herdado de OutputStream)
GetHashCode()

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

(Herdado de Object)
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)
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)
PutFields()

Recupere o objeto usado para armazenar em buffer campos persistentes a serem gravados no fluxo.

ReplaceObject(Object)

Esse método permitirá que subclasses confiáveis de ObjectOutputStream substituam um objeto por outro durante a serialização.

Reset()

A redefinição desconsiderará o estado de quaisquer objetos já gravados no fluxo.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle.

(Herdado de Object)
ToArray<T>()

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
ToString()

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

(Herdado de Object)
UnregisterFromRuntime()

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
UseProtocolVersion(ObjectStreamProtocol)

Especifique a versão do protocolo de fluxo a ser usada ao gravar o fluxo.

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)
Write(Byte[])

Grava b.length bytes da matriz de bytes especificada nesse fluxo de saída.

(Herdado de OutputStream)
Write(Byte[], Int32, Int32)

Grava len bytes da matriz de bytes especificada começando no deslocamento off para esse fluxo de saída.

(Herdado de OutputStream)
Write(Int32)

Grava um byte.

WriteAsync(Byte[])

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de OutputStream)
WriteAsync(Byte[], Int32, Int32)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de OutputStream)
WriteAsync(Int32)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de OutputStream)
WriteBoolean(Boolean)

Escreve um booleano.

WriteByte(Int32)

Grava um byte de 8 bits.

WriteBytes(String)

Grava uma String como uma sequência de bytes.

WriteChar(Int32)

Grava um char de 16 bits.

WriteChars(String)

Grava uma String como uma sequência de caracteres.

WriteClassDescriptor(ObjectStreamClass)

Escreva o descritor de classe especificado no ObjectOutputStream.

WriteDouble(Double)

Grava um duplo de 64 bits.

WriteFields()

Grave os campos armazenados em buffer no fluxo.

WriteFloat(Single)

Grava um float de 32 bits.

WriteInt(Int32)

Grava um int de 32 bits.

WriteLong(Int64)

Grava um comprimento de 64 bits.

WriteObject(Object)

Grave o objeto especificado no ObjectOutputStream.

WriteObjectOverride(Object)

Método usado por subclasses para substituir o método writeObject padrão.

WriteShort(Int32)

Escreve um short de 16 bits.

WriteStreamHeader()

O método writeStreamHeader é fornecido para que as subclasses possam acrescentar ou preceder seu próprio cabeçalho ao fluxo.

WriteUnshared(Object)

Grava um objeto "não compartilhado" no ObjectOutputStream.

WriteUTF(String)

Gravação de dados primitiva desta cadeia de caracteres no formato UTF-8 modificado.

Implantações explícitas de interface

IJavaPeerable.Disposed()

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
IJavaPeerable.Finalized()

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
IJavaPeerable.JniManagedPeerState

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(Herdado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

(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 ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

GetJniTypeName(IJavaPeerable)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteAsync(IDataOutput, Byte[])

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteAsync(IDataOutput, Byte[], Int32, Int32)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteAsync(IDataOutput, Int32)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteBooleanAsync(IDataOutput, Boolean)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteByteAsync(IDataOutput, Int32)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteBytesAsync(IDataOutput, String)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteCharAsync(IDataOutput, Int32)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteCharsAsync(IDataOutput, String)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteDoubleAsync(IDataOutput, Double)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteFloatAsync(IDataOutput, Single)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteIntAsync(IDataOutput, Int32)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteLongAsync(IDataOutput, Int64)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteShortAsync(IDataOutput, Int32)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteUTFAsync(IDataOutput, String)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

FlushAsync(IFlushable)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

FlushAsync(IObjectOutput)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

WriteObjectAsync(IObjectOutput, Object)

Um ObjectOutputStream grava tipos de dados primitivos e gráficos de objetos Java em um OutputStream.

Aplica-se a