ObjectInputStream - JRE Emulation | JRE Emulation
public class

ObjectInputStream

extends InputStream
implements ObjectInput ObjectStreamConstants
java.lang.Object
   ↳ java.io.InputStream
     ↳ java.io.ObjectInputStream

Class Overview

A specialized InputStream that is able to read (deserialize) Java objects as well as primitive data types (int, byte, char etc.). The data has typically been saved using an ObjectOutputStream.

Summary

Nested Classes
class ObjectInputStream.GetField GetField is an inner class that provides access to the persistent fields read from the source stream. 
[Expand]
Inherited Constants
From interface java.io.ObjectStreamConstants
[Expand]
Inherited Fields
From interface java.io.ObjectStreamConstants
Public Constructors
ObjectInputStream(InputStream input)
Constructs a new ObjectInputStream that reads from the InputStream input.
Protected Constructors
ObjectInputStream()
Constructs a new ObjectInputStream.
Public Methods
int available()
Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking by the next invocation of a method for this input stream.
void close()
Closes this stream.
void defaultReadObject()
Default method to read objects from this stream.
int read()
Reads a single byte from the source stream and returns it as an integer in the range from 0 to 255.
int read(byte[] buffer, int byteOffset, int byteCount)
Reads at most length bytes from the source stream and stores them in byte array buffer starting at offset count.
boolean readBoolean()
Reads a boolean from the source stream.
byte readByte()
Reads a byte (8 bit) from the source stream.
char readChar()
Reads a character (16 bit) from the source stream.
double readDouble()
Reads a double (64 bit) from the source stream.
ObjectInputStream.GetField readFields()
Reads the persistent fields of the object that is currently being read from the source stream.
float readFloat()
Reads a float (32 bit) from the source stream.
void readFully(byte[] dst)
Reads bytes from the source stream into the byte array dst.
void readFully(byte[] dst, int offset, int byteCount)
Reads byteCount bytes from the source stream into the byte array dst.
int readInt()
Reads an integer (32 bit) from the source stream.
String readLine()
This method is deprecated. Use BufferedReader instead.
long readLong()
Reads a long (64 bit) from the source stream.
final Object readObject()
Reads the next object from the source stream.
short readShort()
Reads a short (16 bit) from the source stream.
String readUTF()
Reads a string encoded in modified UTF-8 from the source stream.
Object readUnshared()
Reads the next unshared object from the source stream.
int readUnsignedByte()
Reads an unsigned byte (8 bit) from the source stream.
int readUnsignedShort()
Reads an unsigned short (16 bit) from the source stream.
synchronized void registerValidation(ObjectInputValidation object, int priority)
Registers a callback for post-deserialization validation of objects.
int skipBytes(int length)
Skips length bytes on the source stream.
Protected Methods
boolean enableResolveObject(boolean enable)
Enables object replacement for this stream.
ObjectStreamClass readClassDescriptor()
Reads a class descriptor from the source stream.
Object readObjectOverride()
Method to be overridden by subclasses to read the next object from the source stream.
void readStreamHeader()
Reads and validates the ObjectInputStream header from the source stream.
Class<?> resolveClass(ObjectStreamClass osClass)
Loads the Java class corresponding to the class descriptor osClass that has just been read from the source stream.
Object resolveObject(Object object)
Allows trusted subclasses to substitute the specified original object with a new object.
Class<?> resolveProxyClass(String[] interfaceNames)
Creates the proxy class that implements the interfaces specified in interfaceNames.
Inherited Methods
[Expand]
From class java.io.InputStream
From class java.lang.Object
From interface java.io.Closeable
From interface java.io.ObjectInput
From interface java.lang.AutoCloseable
From interface java.io.DataInput

Public Constructors

public ObjectInputStream (InputStream input)

Constructs a new ObjectInputStream that reads from the InputStream input.

Parameters
input the non-null source InputStream to filter reads on.
Throws
IOException if an error occurs while reading the stream header.
StreamCorruptedException if the source stream does not contain serialized objects that can be read.

Protected Constructors

protected ObjectInputStream ()

Constructs a new ObjectInputStream. This default constructor can be used by subclasses that do not want to use the public constructor if it allocates unneeded data.

Throws
IOException if an error occurs when creating this stream.

Public Methods

public int available ()

Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking by the next invocation of a method for this input stream. The next invocation might be the same thread or another thread. A single read or skip of this many bytes will not block, but may read or skip fewer bytes.

Note that while some implementations of InputStream will return the total number of bytes in the stream, many will not. It is never correct to use the return value of this method to allocate a buffer intended to hold all data in this stream.

A subclass' implementation of this method may choose to throw an IOException if this input stream has been closed by invoking the close() method.

The available method for class InputStream always returns 0.

This method should be overridden by subclasses.

Returns
  • an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking or 0 when it reaches the end of the input stream.
Throws
IOException

public void close ()

Closes this stream. This implementation closes the source stream.

Throws
IOException if an error occurs while closing this stream.

public void defaultReadObject ()

Default method to read objects from this stream. Serializable fields defined in the object's class and superclasses are read from the source stream.

Throws
ClassNotFoundException if the object's class cannot be found.
IOException if an I/O error occurs while reading the object data.
NotActiveException if this method is not called from readObject().

public int read ()

Reads a single byte from the source stream and returns it as an integer in the range from 0 to 255. Returns -1 if the end of the source stream has been reached. Blocks if no input is available.

Returns
  • the byte read or -1 if the end of the source stream has been reached.
Throws
IOException if an error occurs while reading from this stream.

public int read (byte[] buffer, int byteOffset, int byteCount)

Reads at most length bytes from the source stream and stores them in byte array buffer starting at offset count. Blocks until count bytes have been read, the end of the source stream is detected or an exception is thrown.

Parameters
buffer the array in which to store the bytes read.
byteOffset the initial position in buffer to store the bytes read from the source stream.
byteCount the maximum number of bytes to store in buffer.
Returns
  • the number of bytes read or -1 if the end of the source input stream has been reached.
Throws
IndexOutOfBoundsException if offset < 0 or length < 0, or if offset + length is greater than the length of buffer.
IOException if an error occurs while reading from this stream.
NullPointerException if buffer is null.

public boolean readBoolean ()

Reads a boolean from the source stream.

Returns
  • the boolean value read from the source stream.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public byte readByte ()

Reads a byte (8 bit) from the source stream.

Returns
  • the byte value read from the source stream.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public char readChar ()

Reads a character (16 bit) from the source stream.

Returns
  • the char value read from the source stream.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public double readDouble ()

Reads a double (64 bit) from the source stream.

Returns
  • the double value read from the source stream.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public ObjectInputStream.GetField readFields ()

Reads the persistent fields of the object that is currently being read from the source stream. The values read are stored in a GetField object that provides access to the persistent fields. This GetField object is then returned.

Returns
  • the GetField object from which persistent fields can be accessed by name.
Throws
ClassNotFoundException if the class of an object being deserialized can not be found.
IOException if an error occurs while reading from this stream.
NotActiveException if this stream is currently not reading an object.

public float readFloat ()

Reads a float (32 bit) from the source stream.

Returns
  • the float value read from the source stream.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public void readFully (byte[] dst)

Reads bytes from the source stream into the byte array dst. This method will block until dst.length bytes have been read.

Parameters
dst the array in which to store the bytes read.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public void readFully (byte[] dst, int offset, int byteCount)

Reads byteCount bytes from the source stream into the byte array dst.

Parameters
dst the byte array in which to store the bytes read.
offset the initial position in dst to store the bytes read from the source stream.
byteCount the number of bytes to read.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public int readInt ()

Reads an integer (32 bit) from the source stream.

Returns
  • the integer value read from the source stream.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public String readLine ()

This method is deprecated.
Use BufferedReader instead.

Reads the next line from the source stream. Lines are terminated by '\r', '\n', "\r\n" or an EOF.

Returns
  • the string read from the source stream.
Throws
IOException if an error occurs while reading from the source stream.

public long readLong ()

Reads a long (64 bit) from the source stream.

Returns
  • the long value read from the source stream.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public final Object readObject ()

Reads the next object from the source stream.

Returns
  • the object read from the source stream.
Throws
ClassNotFoundException if the class of one of the objects in the object graph cannot be found.
IOException if an error occurs while reading from the source stream.
OptionalDataException if primitive data types were found instead of an object.

public short readShort ()

Reads a short (16 bit) from the source stream.

Returns
  • the short value read from the source stream.
Throws
IOException if an error occurs while reading from the source stream.

public String readUTF ()

Reads a string encoded in modified UTF-8 from the source stream.

Returns
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public Object readUnshared ()

Reads the next unshared object from the source stream.

Returns
  • the new object read.
Throws
ClassNotFoundException if the class of one of the objects in the object graph cannot be found.
IOException if an error occurs while reading from the source stream.

public int readUnsignedByte ()

Reads an unsigned byte (8 bit) from the source stream.

Returns
  • the unsigned byte value read from the source stream packaged in an integer.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public int readUnsignedShort ()

Reads an unsigned short (16 bit) from the source stream.

Returns
  • the unsigned short value read from the source stream packaged in an integer.
Throws
EOFException if the end of the input is reached before the read request can be satisfied.
IOException if an error occurs while reading from the source stream.

public synchronized void registerValidation (ObjectInputValidation object, int priority)

Registers a callback for post-deserialization validation of objects. It allows to perform additional consistency checks before the readObject() method of this class returns its result to the caller. This method can only be called from within the readObject() method of a class that implements "special" deserialization rules. It can be called multiple times. Validation callbacks are then done in order of decreasing priority, defined by priority.

Parameters
object an object that can validate itself by receiving a callback.
priority the validator's priority.
Throws
InvalidObjectException if object is null.
NotActiveException if this stream is currently not reading objects. In that case, calling this method is not allowed.
See Also

public int skipBytes (int length)

Skips length bytes on the source stream. This method should not be used to skip bytes at any arbitrary position, just when reading primitive data types (int, char etc).

Parameters
length the number of bytes to skip.
Returns
  • the number of bytes actually skipped.
Throws
IOException if an error occurs while skipping bytes on the source stream.
NullPointerException if the source stream is null.

Protected Methods

protected boolean enableResolveObject (boolean enable)

Enables object replacement for this stream. By default this is not enabled. Only trusted subclasses (loaded with system class loader) are allowed to change this status.

Parameters
enable true to enable object replacement; false to disable it.
Returns
  • the previous setting.

protected ObjectStreamClass readClassDescriptor ()

Reads a class descriptor from the source stream.

Returns
  • the class descriptor read from the source stream.
Throws
ClassNotFoundException if a class for one of the objects cannot be found.
IOException if an error occurs while reading from the source stream.

protected Object readObjectOverride ()

Method to be overridden by subclasses to read the next object from the source stream.

Returns
  • the object read from the source stream.
Throws
ClassNotFoundException if the class of one of the objects in the object graph cannot be found.
IOException if an error occurs while reading from the source stream.
OptionalDataException if primitive data types were found instead of an object.

protected void readStreamHeader ()

Reads and validates the ObjectInputStream header from the source stream.

Throws
IOException if an error occurs while reading from the source stream.
StreamCorruptedException if the source stream does not contain readable serialized objects.

protected Class<?> resolveClass (ObjectStreamClass osClass)

Loads the Java class corresponding to the class descriptor osClass that has just been read from the source stream.

Parameters
osClass an ObjectStreamClass read from the source stream.
Returns
  • a Class corresponding to the descriptor osClass.
Throws
ClassNotFoundException if the class for an object cannot be found.
IOException if an I/O error occurs while creating the class.

protected Object resolveObject (Object object)

Allows trusted subclasses to substitute the specified original object with a new object. Object substitution has to be activated first with calling enableResolveObject(true). This implementation just returns object.

Parameters
object the original object for which a replacement may be defined.
Returns
  • the replacement object for object.
Throws
IOException if any I/O error occurs while creating the replacement object.

protected Class<?> resolveProxyClass (String[] interfaceNames)

Creates the proxy class that implements the interfaces specified in interfaceNames.

Parameters
interfaceNames the interfaces used to create the proxy class.
Returns
  • the proxy class.
Throws
ClassNotFoundException if the proxy class or any of the specified interfaces cannot be created.
IOException if an error occurs while reading from the source stream.