问题描述:
今天在用套接字编程时遇到java.io.StreamCorruptedException: invalid type code: AC
起因是我在尝试获取这个Object第二次时,抛出这个异常
分析产生原因:
每次使用一个新ObjectOutputStream 去写入一个先前使用过的ObjectOutputStream写入的流。先前的流已经存在一个序列化对象,而再次写入一个头文件就会让现有的ObjectInputStream出现问题,所以会报错
解决方法
一、不要在同一个套接字上使用其他流或reader或writer
二、运用集合将要序列化的添加到集合中,将这个集合序列化到文件中
三、重写ObjectOutputSream的writeStreamHeader()方法,判断是否是第一次写入
四、不重写方法,反序列化的while循环中每次都创建一个新的ObjectInputStream用来读取header