java.io.StreamCorruptedException: invalid type code: AC

  • Post author:
  • Post category:java


对于ObjectInputStream和ObjectOutputStream来说,在构造后的第一次读取或写入时,会先读取或写入一个对象头,之后再读取或写入对象。

例如,对于下段代码:

ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
for (int i = 0; i < 2; ++i) {
    oos.writeInt(1);
}

写入的内容是


头-对象-对象


, 因此在读取时要这么读取:

ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
for (int i = 0; i < 2; ++i) {
    ois.readInt();
}

对于这段代码:

for (int i = 0; i < 2; ++i) {
    ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
    oos.writeInt(1);
}

写入的内容是


头-对象-头-对象


,因此要这么读取:

for (int i = 0; i < 2; ++i) {
    ObjectInputStream oos = new ObjectInputStream(socket.getInputStream());
    oos.readInt();
}

ObjectOutputStream写入的头必须和ObjectInputStream读取的头一致。


本文是个人理解,如有错误请指出!



版权声明:本文为wlz_2003原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。