Condividi tramite


ObjectOutputStream Classe

Definizione

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto 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
Ereditarietà
ObjectOutputStream
Attributi
Implementazioni

Commenti

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream. Gli oggetti possono essere letti (ricostituiti) usando objectInputStream. L'archiviazione permanente degli oggetti può essere eseguita usando un file per il flusso. Se il flusso è un flusso socket di rete, gli oggetti possono essere ricostituiti in un altro host o in un altro processo.

Solo gli oggetti che supportano l'interfaccia java.io.Serializable possono essere scritti nei flussi. La classe di ogni oggetto serializzabile viene codificata, inclusi il nome della classe e la firma della classe, i valori dei campi e delle matrici dell'oggetto e la chiusura di qualsiasi altro oggetto a cui viene fatto riferimento dagli oggetti iniziali.

Il metodo writeObject viene utilizzato per scrivere un oggetto nel flusso. Qualsiasi oggetto, incluse stringhe e matrici, viene scritto con writeObject. È possibile scrivere più oggetti o primitive nel flusso. Gli oggetti devono essere letti dall'oggetto ObjectInputstream corrispondente con gli stessi tipi e nello stesso ordine in cui sono stati scritti.

I tipi di dati primitivi possono anche essere scritti nel flusso usando i metodi appropriati di DataOutput. Le stringhe possono essere scritte anche usando il metodo writeUTF.

Il meccanismo di serializzazione predefinito per un oggetto scrive la classe dell'oggetto, la firma della classe e i valori di tutti i campi non temporanei e non statici. I riferimenti ad altri oggetti (ad eccezione dei campi temporanei o statici) causano anche la scrittura di tali oggetti. Più riferimenti a un singolo oggetto vengono codificati usando un meccanismo di condivisione dei riferimenti in modo che i grafici degli oggetti possano essere ripristinati nella stessa forma di quando è stato scritto l'originale.

Ad esempio, per scrivere un oggetto che può essere letto dall'esempio in 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();

Le classi che richiedono una gestione speciale durante il processo di serializzazione e deserializzazione devono implementare metodi speciali con queste firme esatte: <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;

Il metodo writeObject è responsabile della scrittura dello stato dell'oggetto per la classe specifica in modo che il metodo readObject corrispondente possa ripristinarlo. Il metodo non deve preoccuparsi dello stato appartenente alle superclassi o alle sottoclassi dell'oggetto. Lo stato viene salvato scrivendo i singoli campi in ObjectOutputStream usando il metodo writeObject o usando i metodi per i tipi di dati primitivi supportati da DataOutput.

La serializzazione non scrive i campi di qualsiasi oggetto che non implementa l'interfaccia java.io.Serializable. Le sottoclassi di oggetti che non sono serializzabili possono essere serializzabili. In questo caso, la classe non serializzabile deve avere un costruttore no-arg per consentire l'inizializzazione dei relativi campi. In questo caso è responsabilità della sottoclasse salvare e ripristinare lo stato della classe non serializzabile. Spesso i campi di tale classe sono accessibili (pubblico, pacchetto o protetto) o che sono disponibili metodi get e set che possono essere usati per ripristinare lo stato.

La serializzazione di un oggetto può essere impedita implementando metodi writeObject e readObject che generano l'eccezione NotSerializableException. L'eccezione verrà intercettata dal objectOutputStream e interromperà il processo di serializzazione.

L'implementazione dell'interfaccia Externalizable consente all'oggetto di assumere il controllo completo sul contenuto e sul formato del modulo serializzato dell'oggetto. I metodi dell'interfaccia Externalizable, writeExternal e readExternal, vengono chiamati per salvare e ripristinare lo stato degli oggetti. Quando implementato da una classe, è possibile scrivere e leggere il proprio stato usando tutti i metodi di ObjectOutput e ObjectInput. È responsabilità degli oggetti gestire qualsiasi controllo delle versioni che si verifica.

Le costanti Enum vengono serializzate in modo diverso rispetto agli oggetti serializzabili normali o esternizzabili. La forma serializzata di una costante di enumerazione è costituita esclusivamente dal nome; i valori di campo della costante non vengono trasmessi. Per serializzare una costante enumerazione, ObjectOutputStream scrive la stringa restituita dal metodo name della costante. Analogamente ad altri oggetti serializzabili o esterni, le costanti enumerabili possono funzionare come destinazioni dei riferimenti indietro che vengono visualizzate successivamente nel flusso di serializzazione. Il processo in base al quale le costanti enumerazioni vengono serializzate non possono essere personalizzate; tutti i metodi writeObject e writeReplace specifici della classe definiti dai tipi enum vengono ignorati durante la serializzazione. Analogamente, tutti i tipi di enumerazione serialPersistentFields o serialVersionUID vengono ignorati. Tutti i tipi di enumerazione hanno una serialVersionUID fissa di 0L.

I dati primitivi, esclusi i campi serializzabili e i dati esterni, vengono scritti in ObjectOutputStream nei record di dati in blocchi. Un record di dati a blocchi è costituito da un'intestazione e da dati. L'intestazione dei dati del blocco è costituita da un marcatore e dal numero di byte da seguire nell'intestazione. Le scritture di dati primitivi consecutive vengono unite in un unico record di dati a blocchi. Il fattore di blocco usato per un record di dati a blocchi sarà di 1024 byte. Ogni record di dati a blocchi verrà riempito fino a 1024 byte o verrà scritto ogni volta che si verifica una terminazione della modalità dati a blocchi. Le chiamate ai metodi ObjectOutputStream writeObject, defaultWriteObject e writeFields terminano inizialmente qualsiasi record di dati a blocchi esistente.

Aggiunta in JDK1.1.

Documentazione java per java.io.ObjectOutputStream.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal Android e usato in base ai termini descritti in 2.5 Attribution License Creative Commons 2.5 Attribution License.

Costruttori

ObjectOutputStream()

Fornire un modo per le sottoclassi che reimplementano completamente ObjectOutputStream per non dover allocare dati privati appena usati da questa implementazione di ObjectOutputStream.

ObjectOutputStream(IntPtr, JniHandleOwnership)

Costruttore utilizzato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime.

ObjectOutputStream(Stream)

Crea un oggetto ObjectOutputStream che scrive nell'oggetto OutputStream specificato.

Proprietà

Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
JniPeerMembers

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

PeerReference

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

Metodi

AnnotateClass(Class)

Le sottoclassi possono implementare questo metodo per consentire l'archiviazione dei dati della classe nel flusso.

AnnotateProxyClass(Class)

Le sottoclassi possono implementare questo metodo per archiviare dati personalizzati nel flusso insieme ai descrittori per le classi proxy dinamiche.

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Close()

Chiude questo flusso di output e rilascia tutte le risorse di sistema associate a questo flusso.

(Ereditato da OutputStream)
DefaultWriteObject()

Scrivere i campi non statici e non temporanei della classe corrente in questo flusso.

Dispose()

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
Dispose(Boolean)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
Drain()

Svuotare i dati memorizzati nel buffer in ObjectOutputStream.

EnableReplaceObject(Boolean)

Abilitare il flusso per sostituire gli oggetti nel flusso.

Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
Flush()

Scarica questo flusso di output e forza la scrittura di tutti i byte di output memorizzati nel buffer.

(Ereditato da OutputStream)
GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitoraggio di questo oggetto.

(Ereditato da Object)
PutFields()

Recuperare l'oggetto utilizzato per memorizzare nel buffer i campi permanenti da scrivere nel flusso.

ReplaceObject(Object)

Questo metodo consentirà alle sottoclassi attendibili di ObjectOutputStream di sostituire un oggetto per un altro durante la serializzazione.

Reset()

La reimpostazione ignorerà lo stato di tutti gli oggetti già scritti nel flusso.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
ToArray<T>()

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione in formato stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
UseProtocolVersion(ObjectStreamProtocol)

Specificare la versione del protocollo di flusso da usare durante la scrittura del flusso.

Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una>notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale.

(Ereditato da Object)
Write(Byte[])

Scrive b.length byte dalla matrice di byte specificata in questo flusso di output.

(Ereditato da OutputStream)
Write(Byte[], Int32, Int32)

Scrive len byte dalla matrice di byte specificata a partire dall'offset off in questo flusso di output.

(Ereditato da OutputStream)
Write(Int32)

Scrive un byte.

WriteAsync(Byte[])

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da OutputStream)
WriteAsync(Byte[], Int32, Int32)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da OutputStream)
WriteAsync(Int32)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da OutputStream)
WriteBoolean(Boolean)

Scrive un valore booleano.

WriteByte(Int32)

Scrive un byte a 8 bit.

WriteBytes(String)

Scrive una stringa come sequenza di byte.

WriteChar(Int32)

Scrive un carattere a 16 bit.

WriteChars(String)

Scrive un valore String come sequenza di caratteri.

WriteClassDescriptor(ObjectStreamClass)

Scrivere il descrittore di classe specificato in ObjectOutputStream.

WriteDouble(Double)

Scrive un valore double a 64 bit.

WriteFields()

Scrivere i campi memorizzati nel buffer nel flusso.

WriteFloat(Single)

Scrive un float a 32 bit.

WriteInt(Int32)

Scrive un valore int a 32 bit.

WriteLong(Int64)

Scrive un valore long a 64 bit.

WriteObject(Object)

Scrivere l'oggetto specificato in ObjectOutputStream.

WriteObjectOverride(Object)

Metodo utilizzato dalle sottoclassi per eseguire l'override del metodo writeObject predefinito.

WriteShort(Int32)

Scrive un short a 16 bit.

WriteStreamHeader()

Il metodo writeStreamHeader viene fornito in modo che le sottoclassi possano accodare o anteporre la propria intestazione al flusso.

WriteUnshared(Object)

Scrive un oggetto "non condiviso" nell'oggetto ObjectOutputStream.

WriteUTF(String)

Scrittura di dati primitivi di questa stringa nel formato UTF-8 modificato.

Implementazioni dell'interfaccia esplicita

IJavaPeerable.Disposed()

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
IJavaPeerable.Finalized()

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo verificato dal runtime Android.

JavaCast<TResult>(IJavaObject)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

GetJniTypeName(IJavaPeerable)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteAsync(IDataOutput, Byte[])

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

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

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteAsync(IDataOutput, Int32)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteBooleanAsync(IDataOutput, Boolean)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteByteAsync(IDataOutput, Int32)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteBytesAsync(IDataOutput, String)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteCharAsync(IDataOutput, Int32)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteCharsAsync(IDataOutput, String)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteDoubleAsync(IDataOutput, Double)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteFloatAsync(IDataOutput, Single)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteIntAsync(IDataOutput, Int32)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteLongAsync(IDataOutput, Int64)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteShortAsync(IDataOutput, Int32)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteUTFAsync(IDataOutput, String)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

FlushAsync(IFlushable)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

FlushAsync(IObjectOutput)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

WriteObjectAsync(IObjectOutput, Object)

ObjectOutputStream scrive i tipi di dati primitivi e i grafici di oggetti Java in un oggetto OutputStream.

Si applica a