I’m trying to Serialize an object to a Byte array, for storage in a String. I cannot for the life of me figure out where I’m going wrong here.
String store = null;
// Writing
try {
String hi = "Hi there world!";
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject(hi);
oos.close();
store = out.toString("UTF-8");
} catch(Exception e) {
System.out.println(e);
}
// Reading
try {
ByteArrayInputStream in = new ByteArrayInputStream(store.getBytes("UTF-8"));
ObjectInputStream ois = new ObjectInputStream(in);
String data = (String) ois.readObject();
} catch(Exception e) {
System.out.println(e);
}
I keep getting java.io.StreamCorruptedException and I don’t know why 🙁
the data in out is not UTF-8 formatted, in fact it’s not a String at all. It’s a serialized instance of a String. You can call toString on it, just because you can call toString on any object.
you’d want to to
byte[] data = out.toByteArray();
and then pass data into the ByteArrayInputStream constructor