Posted By:
Randy_McLaughlin
Posted On:
Monday, October 22, 2001 08:29 AM
To create a byte array containing the serialized representation of an object graph, create a
ByteArrayOutputStream object and then pass it as an argument to the
ObjectOutputStream constructor. Once you've serialized the object, flush the
ObjectOutputStream. You can then obtain a byte array containing the serialized representation using the the
ByteArrayOutputStream's toByteArray method. You can also obtain a String from the
ByteArrayOutputStream by using its
toString method.
You could later deserialize the byte array using the ByteArrayInputStream and ObjectInputStream classes. Pass the byte array as an argument to the ByteArrayInputStream constructor. Pass the newly created ByteArrayInputStream object as an argument to the ObjectInputStream constructor. You can then deserialize the object graph using the readObject method.
Here's some code:
// write the 'yourObject' object to a byte array called 'byteArray'.
ByteArrayOutputStream ostream = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(ostream);
out.writeObject(yourObject);
out.flush();
byte[] byteArray= ostream.toByteArray();
ostream.close();
// store, copy or transfer byteArray as needed without changing its content
// deserialize the byte array
ObjectInputStream istream = new ObjectInputStream(byteArray);
ObjectInputStream in = new ObjectInputStream(istream);
Object deserializedObject= in.readObject();
istream.close();
The byte array contains binary data. You must assure that the byte array passed to the ObjectInputStream constructor is an exact bit-by-bit copy of the array obtained from the ByteArrayOutputStream. It may be converted to a string, but you must assure that the same encoding is used when converting to a string and when converting back to a byte array. In addition, to use the resulting string in a URL, the java.net.URLEncoder class should be used to encode characters that would otherwise be illegal in a URL.