我想通过使用套接字通过ObjectOutputStream加载一个对象。ObjectOutputStream抛出java.io.StreamCorruptedException
我在同一台机器上测试。
我收到此错误:
java.io.StreamCorruptedException: invalid type code: 00
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readArray(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
我用这个代码来创建的ObjectOutputStream:
InputStream in = new ByteArrayInputStream(bytes);
ObjectInputStream objectInputStream = new ObjectInputStream(in);
Object readObject = objectInputStream.readObject();
更奇怪的是,有当我通过是没那么大的物体没有probleam 。
我读取的对象的大小(以字节为单位返回probleam)约为:73423字节。
我通过ObjectOutputStream传递一个java.util.Vector。
如果我传递的数量大于5,则会引发上述异常。
我还创建了一个简单的测试(无需通过套接字)以确保Object是可序列化的,它的工作原理没有问题。 NNTraining是我序列化类:
Vector<NNTraining> nn = new Vector<NNTraining>();
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(b);
o.writeObject(nn);
o.close();
ByteArrayInputStream bb = new ByteArrayInputStream(b.toByteArray());
ObjectInputStream oo = new ObjectInputStream(bb);
Vector<NNTraining> v2 = (Vector<NNTraining>) oo.readObject();
您可以添加包含从套接字读取数据的代码示例。 – 2013-05-02 20:47:09