我想通過使用套接字通過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