ObjectInputStream Clase

Definición

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

[Android.Runtime.Register("java/io/ObjectInputStream", DoNotGenerateAcw=true)]
public class ObjectInputStream : Java.IO.InputStream, IDisposable, Java.Interop.IJavaPeerable, Java.IO.IObjectInput
[<Android.Runtime.Register("java/io/ObjectInputStream", DoNotGenerateAcw=true)>]
type ObjectInputStream = class
    inherit InputStream
    interface IObjectInput
    interface IDataInput
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Herencia
ObjectInputStream
Atributos
Implementaciones

Comentarios

Un objeto ObjectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ObjectOutputStream y ObjectInputStream pueden proporcionar una aplicación con almacenamiento persistente para gráficos de objetos cuando se usan con un FileOutputStream y FileInputStream respectivamente. ObjectInputStream se usa para recuperar esos objetos previamente serializados. Otros usos incluyen pasar objetos entre hosts mediante un flujo de socket o para serializar y desacoplar argumentos y parámetros en un sistema de comunicación remota.

ObjectInputStream garantiza que los tipos de todos los objetos del grafo creados a partir de la secuencia coincidan con las clases presentes en la máquina virtual Java. Las clases se cargan según sea necesario mediante los mecanismos estándar.

Solo los objetos que admiten la interfaz java.io.Serializable o java.io.Externalizable se pueden leer desde secuencias.

El método readObject se usa para leer un objeto de la secuencia. La conversión segura de Java debe usarse para obtener el tipo deseado. En Java, las cadenas y matrices son objetos y se tratan como objetos durante la serialización. Cuando se leen, deben convertirse al tipo esperado.

Los tipos de datos primitivos se pueden leer desde la secuencia mediante el método adecuado en DataInput.

El mecanismo de deserialización predeterminado para los objetos restaura el contenido de cada campo en el valor y el tipo que tenía cuando se escribió. El proceso de deserialización o omite los campos declarados como transitorios o estáticos. Las referencias a otros objetos hacen que esos objetos se lean desde la secuencia según sea necesario. Los gráficos de objetos se restauran correctamente mediante un mecanismo de uso compartido de referencias. Los nuevos objetos siempre se asignan al deserializar, lo que impide que se sobrescriban los objetos existentes.

Leer un objeto es análogo a ejecutar los constructores de un nuevo objeto. La memoria se asigna para el objeto y se inicializa en cero (NULL). Los constructores no arg se invocan para las clases no serializables y, a continuación, los campos de las clases serializables se restauran desde la secuencia a partir de la clase serializable más cercana al objeto java.lang.y finalizan con la clase más específica del objeto.

Por ejemplo, para leer desde una secuencia como se escribe en el ejemplo de ObjectOutputStream: <br>

FileInputStream fis = new FileInputStream("t.tmp");
                 ObjectInputStream ois = new ObjectInputStream(fis);

                 int i = ois.readInt();
                 String today = (String) ois.readObject();
                 Date date = (Date) ois.readObject();

                 ois.close();

Las clases controlan cómo se serializan mediante la implementación de las interfaces java.io.Serializable o java.io.Externalizable.

La implementación de la interfaz Serializable permite que la serialización de objetos guarde y restaure todo el estado del objeto y permite que las clases evolucionen entre el momento en que se escribe la secuencia y la hora en que se lee. Recorre automáticamente las referencias entre objetos, guardando y restaurando gráficos completos.

Las clases serializables que requieren un control especial durante el proceso de serialización y deserialización deben implementar los métodos siguientes:

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

El método readObject es responsable de leer y restaurar el estado del objeto para su clase determinada mediante datos escritos en la secuencia por el método writeObject correspondiente. El método no necesita preocuparse por el estado que pertenece a sus superclases o subclases. El estado se restaura leyendo datos de ObjectInputStream para los campos individuales y realizando asignaciones a los campos adecuados del objeto. DataInput admite la lectura de tipos de datos primitivos.

Cualquier intento de leer datos de objeto que supere los límites de los datos personalizados escritos por el método writeObject correspondiente hará que se produzca una excepción OptionalDataException con un valor de campo eof de true. Las lecturas que no son de objeto que superan el final de los datos asignados reflejarán el final de los datos de la misma manera que indicarían el final de la secuencia: las lecturas bytewise devolverán -1 como lectura de bytes o número de bytes leídos, y las lecturas primitivas producirán EOFExceptions. Si no hay ningún método writeObject correspondiente, el final de los datos serializados predeterminados marca el final de los datos asignados.

Las llamadas de lectura de objetos y primitivas emitidas desde dentro de un método readExternal se comportan de la misma manera; si la secuencia ya está colocada al final de los datos escritos por el método writeExternal correspondiente, las lecturas de objetos producirán OptionalDataExceptions con eof establecido en true, las lecturas bytewise devolverán -1 y las lecturas primitivas producirán EOFExceptions. Tenga en cuenta que este comportamiento no contiene secuencias escritas con el protocolo antiguo ObjectStreamConstants.PROTOCOL_VERSION_1 , en las que el final de los datos escritos por métodos writeExternal no está demarcado y, por lo tanto, no se puede detectar.

El método readObjectNoData es responsable de inicializar el estado del objeto para su clase concreta en caso de que el flujo de serialización no muestre la clase especificada como superclase del objeto que se está deserializando. Esto puede ocurrir en los casos en los que la entidad receptora usa una versión diferente de la clase de la instancia deserializada que la parte remitente, y la versión del receptor extiende las clases que no se extienden por la versión del remitente. Esto también puede ocurrir si se ha alterado el flujo de serialización; por lo tanto, readObjectNoData es útil para inicializar objetos deserializados correctamente a pesar de una secuencia de origen "hostil" o incompleta.

La serialización no lee ni asigna valores a los campos de ningún objeto que no implemente la interfaz java.io.Serializable. Las subclases de Objetos que no son serializables pueden ser serializables. En este caso, la clase no serializable debe tener un constructor no-arg para permitir que sus campos se inicialicen. En este caso, es responsabilidad de la subclase guardar y restaurar el estado de la clase no serializable. Suele ser el caso de que los campos de esa clase sean accesibles (público, paquete o protegido) o que haya métodos get y set que se pueden usar para restaurar el estado.

Cualquier excepción que se produzca al deserializar un objeto se detectará mediante ObjectInputStream y anulará el proceso de lectura.

La implementación de la interfaz Externalizable permite al objeto asumir un control completo sobre el contenido y el formato del formulario serializado del objeto. Se llama a los métodos de la interfaz Externalizable, writeExternal y readExternal, para guardar y restaurar el estado de los objetos. Cuando se implementa mediante una clase, pueden escribir y leer su propio estado mediante todos los métodos de ObjectOutput y ObjectInput. Es responsabilidad de los objetos controlar cualquier control de versiones que se produzca.

Las constantes de enumeración se deserializan de forma diferente a los objetos serializables o externalizables normales. La forma serializada de una constante de enumeración consta únicamente de su nombre; Los valores de campo de la constante no se transmiten. Para deserializar una constante de enumeración, ObjectInputStream lee el nombre de constante de la secuencia; A continuación, la constante deserializada se obtiene llamando al método Enum.valueOf(Class, String) estático con el tipo base de la constante de enumeración y el nombre de constante recibido como argumentos. Al igual que otros objetos serializables o externalizables, las constantes de enumeración pueden funcionar como los destinos de las referencias inversas que aparecen posteriormente en el flujo de serialización. El proceso por el que se deserializan las constantes de enumeración no se puede personalizar: los métodos readObject, readObjectNoData y readResolve específicos de la clase definidos por los tipos de enumeración se omiten durante la deserialización. Del mismo modo, todas las declaraciones de campo serialPersistentFields o serialVersionUID también se omiten; todos los tipos de enumeración tienen un valor serialVersionUID fijo de 0L.

Se ha agregado en JDK1.1.

Documentación de Java para java.io.ObjectInputStream.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código Project y que se usan según los términos Creative Commons 2.5 Attribution License.

Constructores

ObjectInputStream()

Proporcione una manera de que las subclases que se vuelvan a implementar completamente ObjectInputStream no tengan que asignar datos privados que acaba de usar esta implementación de ObjectInputStream.

ObjectInputStream(IntPtr, JniHandleOwnership)

Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el entorno de ejecución.

ObjectInputStream(Stream)

Crea un objeto ObjectInputStream que lee de inputStream especificado.

Propiedades

Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
JniPeerMembers

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

PeerReference

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

Métodos

Available()

Devuelve una estimación del número de bytes que se pueden leer (o omitir) de esta secuencia de entrada sin bloqueo, que puede ser 0 o 0 cuando se detecta el final de la secuencia.

(Heredado de InputStream)
Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Close()

Cierra este flujo de entrada y libera los recursos del sistema asociados a la secuencia.

(Heredado de InputStream)
DefaultReadObject()

Lea los campos no estáticos y no transitorios de la clase actual de esta secuencia.

Dispose()

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
Dispose(Boolean)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
EnableResolveObject(Boolean)

Habilite la secuencia para permitir que los objetos leídos de la secuencia se reemplacen.

Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetHashCode()

Devuelve un valor de código hash del objeto.

(Heredado de Object)
JavaFinalize()

Llamado por el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto.

(Heredado de Object)
Mark(Int32)

Marca la posición actual en este flujo de entrada.

(Heredado de InputStream)
MarkSupported()

Comprueba si este flujo de entrada admite los mark métodos y reset .

(Heredado de InputStream)
Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
Read()

Lee un byte de datos.

Read(Byte[])

Lee algún número de bytes del flujo de entrada y los almacena en la matriz bde búfer .

(Heredado de InputStream)
Read(Byte[], Int32, Int32)

Lee hasta len bytes de datos del flujo de entrada en una matriz de bytes.

(Heredado de InputStream)
ReadAllBytes()

Lee todos los bytes restantes del flujo de entrada.

(Heredado de InputStream)
ReadAsync()

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de InputStream)
ReadAsync(Byte[])

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de InputStream)
ReadAsync(Byte[], Int32, Int32)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de InputStream)
ReadBoolean()

Lee en un valor booleano.

ReadByte()

Lee un byte de 8 bits.

ReadChar()

Lee un carácter de 16 bits.

ReadClassDescriptor()

Lea un descriptor de clase del flujo de serialización.

ReadDouble()

Lee un doble de 64 bits.

ReadFields()

Lee los campos persistentes de la secuencia y los pone a disposición por nombre.

ReadFloat()

Lee un valor float de 32 bits.

ReadFully(Byte[])

Lee bytes, bloqueando hasta que se leen todos los bytes.

ReadFully(Byte[], Int32, Int32)

Lee bytes, bloqueando hasta que se leen todos los bytes.

ReadInt()

Lee un valor int de 32 bits.

ReadLine()
Obsoletos.

Lee en una línea terminada por un \n, \r, \r\n o EOF.

ReadLong()

Lee un largo de 64 bits.

ReadNBytes(Byte[], Int32, Int32)

Lee el número solicitado de bytes del flujo de entrada en la matriz de bytes especificada.

(Heredado de InputStream)
ReadNBytes(Int32)

Lee hasta un número especificado de bytes del flujo de entrada.

(Heredado de InputStream)
ReadObject()

Lee un objeto de ObjectInputStream.

ReadObjectOverride()

Las subclases de confianza de ObjectOutputStream que construyeron ObjectOutputStream mediante el constructor no-arg protegido llama a este método.

ReadShort()

Lee un short de 16 bits.

ReadStreamHeader()

El método readStreamHeader se proporciona para permitir que las subclases lean y comprueben sus propios encabezados de secuencia.

ReadUnshared()

Lee un objeto "no compartido" de ObjectInputStream.

ReadUnsignedByte()

Lee un byte de 8 bits sin signo.

ReadUnsignedShort()

Lee un short de 16 bits sin signo.

ReadUTF()

Lee una cadena en formato UTF-8 modificado.

RegisterValidation(IObjectInputValidation, Int32)

Registre un objeto que se va a validar antes de que se devuelva el gráfico.

Reset()

Cambia la posición de esta secuencia a la posición en el momento en que se llamó por última vez al mark método en este flujo de entrada.

(Heredado de InputStream)
ResolveClass(ObjectStreamClass)

Cargue el equivalente de clase local de la descripción de la clase de secuencia especificada.

ResolveObject(Object)

Este método permitirá que las subclases de confianza de ObjectInputStream sustituya un objeto por otro durante la deserialización.

ResolveProxyClass(String[])

Devuelve una clase de proxy que implementa las interfaces denominadas en un descriptor de clase de proxy; Las subclases pueden implementar este método para leer datos personalizados de la secuencia junto con los descriptores de las clases de proxy dinámico, lo que les permite usar un mecanismo de carga alternativo para las interfaces y la clase proxy.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
Skip(Int64)

Omite y descarta bytes n de datos de esta secuencia de entrada.

(Heredado de InputStream)
SkipAsync(Int64)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de InputStream)
SkipBytes(Int32)

Omite bytes.

SkipNBytes(Int64)

Omite y descarta exactamente n bytes de datos de esta secuencia de entrada.

(Heredado de InputStream)
ToArray<T>()

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
TransferTo(Stream)

Lee todos los bytes de este flujo de entrada y escribe los bytes en el flujo de salida especificado en el orden en que se leen.

(Heredado de InputStream)
UnregisterFromRuntime()

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em> o <em>interrumpido</em>.<><

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <notificado<>/em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Implementaciones de interfaz explícitas

IJavaPeerable.Disposed()

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
IJavaPeerable.Finalized()

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

(Heredado de Object)

Métodos de extensión

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

GetJniTypeName(IJavaPeerable)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadBooleanAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadByteAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadCharAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadDoubleAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadFloatAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadFullyAsync(IDataInput, Byte[])

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadFullyAsync(IDataInput, Byte[], Int32, Int32)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadIntAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadLineAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadLongAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadShortAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadUnsignedByteAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadUnsignedShortAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadUTFAsync(IDataInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

SkipBytesAsync(IDataInput, Int32)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadAsync(IObjectInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadAsync(IObjectInput, Byte[])

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadAsync(IObjectInput, Byte[], Int32, Int32)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

ReadObjectAsync(IObjectInput)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

SkipAsync(IObjectInput, Int64)

Un objectInputStream deserializa los datos primitivos y los objetos escritos anteriormente mediante objectOutputStream.

Se aplica a