ObjectOutputStream

public class ObjectOutputStream extends OutputStream
implements ObjectOutput ObjectStreamConstants

A specialized OutputStream that is able to write (serialize) Java objects as well as primitive data types (int, byte, char etc.). The data can later be loaded using an ObjectInputStream.

Nested Class Summary

class ObjectOutputStream.PutField PutField is an inner class to provide access to the persistent fields that are written to the target stream. 

Inherited Constant Summary

Inherited Field Summary

Public Constructor Summary

ObjectOutputStream(OutputStream output)
Constructs a new ObjectOutputStream that writes to the OutputStream output.

Protected Constructor Summary

ObjectOutputStream()
Constructs a new ObjectOutputStream.

Public Method Summary

void
close()
Closes this stream.
void
defaultWriteObject()
Default method to write objects to this stream.
void
flush()
Writes buffered data to the target stream and calls the flush method of the target stream.
ObjectOutputStream.PutField
putFields()
Gets this stream's PutField object.
void
reset()
Resets the state of this stream.
void
useProtocolVersion(int version)
Sets the specified protocol version to be used by this stream.
void
write(byte[] buffer, int offset, int length)
Writes count bytes from the byte array buffer starting at offset index to the target stream.
void
write(int value)
Writes a single byte to the target stream.
void
writeBoolean(boolean value)
Writes a boolean to the target stream.
void
writeByte(int value)
Writes a byte (8 bit) to the target stream.
void
writeBytes(String value)
Writes the string value as a sequence of bytes to the target stream.
void
writeChar(int value)
Writes a character (16 bit) to the target stream.
void
writeChars(String value)
Writes the string value as a sequence of characters to the target stream.
void
writeDouble(double value)
Writes a double (64 bit) to the target stream.
void
writeFields()
Writes the fields of the object currently being written to the target stream.
void
writeFloat(float value)
Writes a float (32 bit) to the target stream.
void
writeInt(int value)
Writes an integer (32 bit) to the target stream.
void
writeLong(long value)
Writes a long (64 bit) to the target stream.
final void
writeObject(Object object)
Writes an object to the target stream.
void
writeShort(int value)
Writes a short (16 bit) to the target stream.
void
writeUTF(String value)
Writes a string encoded with modified UTF-8 to the target stream.
void
writeUnshared(Object object)
Writes an unshared object to the target stream.

Protected Method Summary

void
annotateClass(Class<?> aClass)
Writes optional information for class aClass to the output stream.
void
annotateProxyClass(Class<?> aClass)
Writes optional information for a proxy class to the target stream.
void
drain()
Writes buffered data to the target stream.
boolean
enableReplaceObject(boolean enable)
Enables object replacement for this stream.
Object
replaceObject(Object object)
Allows trusted subclasses to substitute the specified original object with a new object.
void
writeClassDescriptor(ObjectStreamClass classDesc)
Writes a class descriptor to the target stream.
void
writeObjectOverride(Object object)
Method to be overridden by subclasses to write object to the target stream.
void
writeStreamHeader()
Writes the ObjectOutputStream header to the target stream.

Inherited Method Summary

Public Constructors

public ObjectOutputStream (OutputStream output)

Constructs a new ObjectOutputStream that writes to the OutputStream output.

Parameters
output the non-null OutputStream to filter writes on.
Throws
IOException if an error occurs while writing the object stream header

Protected Constructors

protected ObjectOutputStream ()

Constructs a new ObjectOutputStream. 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 void close ()

Closes this stream. Any buffered data is flushed. This implementation closes the target stream.

Throws
IOException if an error occurs while closing this stream.

public void defaultWriteObject ()

Default method to write objects to this stream. Serializable fields defined in the object's class and superclasses are written to the output stream.

Throws
IOException if an error occurs while writing to the target stream.
NotActiveException if this method is not called from writeObject().

public void flush ()

Writes buffered data to the target stream and calls the flush method of the target stream.

Throws
IOException if an error occurs while writing to or flushing the output stream.

public ObjectOutputStream.PutField putFields ()

Gets this stream's PutField object. This object provides access to the persistent fields that are eventually written to the output stream. It is used to transfer the values from the fields of the object that is currently being written to the persistent fields.

Returns
  • the PutField object from which persistent fields can be accessed by name.
Throws
IOException if an I/O error occurs.
NotActiveException if this method is not called from writeObject().

public void reset ()

Resets the state of this stream. A marker is written to the stream, so that the corresponding input stream will also perform a reset at the same point. Objects previously written are no longer remembered, so they will be written again (instead of a cyclical reference) if found in the object graph.

Throws
IOException if reset() is called during the serialization of an object.

public void useProtocolVersion (int version)

Sets the specified protocol version to be used by this stream.

Parameters
version the protocol version to be used. Use a PROTOCOL_VERSION_x constant from java.io.ObjectStreamConstants.
Throws
IllegalArgumentException if an invalid version is specified.
IOException if an I/O error occurs.

public void write (byte[] buffer, int offset, int length)

Writes count bytes from the byte array buffer starting at offset index to the target stream. Blocks until all bytes are written.

Parameters
buffer the buffer to write.
offset the index of the first byte in buffer to write.
length the number of bytes from buffer to write to the output stream.
Throws
IOException if an error occurs while writing to the target stream.

public void write (int value)

Writes a single byte to the target stream. Only the least significant byte of the integer value is written to the stream. Blocks until the byte is actually written.

Parameters
value the byte to write.
Throws
IOException if an error occurs while writing to the target stream.

public void writeBoolean (boolean value)

Writes a boolean to the target stream.

Parameters
value the boolean value to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeByte (int value)

Writes a byte (8 bit) to the target stream.

Parameters
value the byte to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeBytes (String value)

Writes the string value as a sequence of bytes to the target stream. Only the least significant byte of each character in the string is written.

Parameters
value the string to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeChar (int value)

Writes a character (16 bit) to the target stream.

Parameters
value the character to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeChars (String value)

Writes the string value as a sequence of characters to the target stream.

Parameters
value the string to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeDouble (double value)

Writes a double (64 bit) to the target stream.

Parameters
value the double to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeFields ()

Writes the fields of the object currently being written to the target stream. The field values are buffered in the currently active PutField object, which can be accessed by calling putFields().

Throws
IOException if an error occurs while writing to the target stream.
NotActiveException if there are no fields to write to the target stream.
See Also

public void writeFloat (float value)

Writes a float (32 bit) to the target stream.

Parameters
value the float to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeInt (int value)

Writes an integer (32 bit) to the target stream.

Parameters
value the integer to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeLong (long value)

Writes a long (64 bit) to the target stream.

Parameters
value the long to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public final void writeObject (Object object)

Writes an object to the target stream.

Parameters
object the object to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.
See Also

public void writeShort (int value)

Writes a short (16 bit) to the target stream.

Parameters
value the short to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeUTF (String value)

Writes a string encoded with modified UTF-8 to the target stream.

Parameters
value the string to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

public void writeUnshared (Object object)

Writes an unshared object to the target stream. This method is identical to writeObject, except that it always writes a new object to the stream versus the use of back-referencing for identical objects by writeObject.

Parameters
object the object to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.
See Also

Protected Methods

protected void annotateClass (Class<?> aClass)

Writes optional information for class aClass to the output stream. This optional data can be read when deserializing the class descriptor (ObjectStreamClass) for this class from an input stream. By default, no extra data is saved.

Parameters
aClass the class to annotate.
Throws
IOException if an error occurs while writing to the target stream.

protected void annotateProxyClass (Class<?> aClass)

Writes optional information for a proxy class to the target stream. This optional data can be read when deserializing the proxy class from an input stream. By default, no extra data is saved.

Parameters
aClass the proxy class to annotate.
Throws
IOException if an error occurs while writing to the target stream.

protected void drain ()

Writes buffered data to the target stream. This is similar to flush but the flush is not propagated to the target stream.

Throws
IOException if an error occurs while writing to the target stream.

protected boolean enableReplaceObject (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 Object replaceObject (Object object)

Allows trusted subclasses to substitute the specified original object with a new object. Object substitution has to be activated first with calling enableReplaceObject(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 void writeClassDescriptor (ObjectStreamClass classDesc)

Writes a class descriptor to the target stream.

Parameters
classDesc the class descriptor to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

protected void writeObjectOverride (Object object)

Method to be overridden by subclasses to write object to the target stream.

Parameters
object the object to write to the target stream.
Throws
IOException if an error occurs while writing to the target stream.

protected void writeStreamHeader ()

Writes the ObjectOutputStream header to the target stream.

Throws
IOException if an error occurs while writing to the target stream.