问题描述
我把一个对象用Objectoutputstream,对象流写进文本里,然后还写入了一些其他的文字,不是对象,我在读取这个文件的时候读出了这个对象后剩下的文字应该怎么读出来?能换输入流吗?我用Objectinputstream读对象后,再读内容报错了Exceptioninthread"main"java.io.StreamCorruptedException:invalidtypecode:D3
解决方案
解决方案二:
再换输入流,怎么定位那个不是对象的字符?一般写入对象,即对象序列化,会在文件开头有所标记的,换种思路吧,可以分开。
解决方案三:
想法同楼上。我也在看io这部分,书上的程序敲出来能运行,可就是不懂什么意思,更不要说自己写程序了,还和楼主有不小的差距啊。。。哎。。。
解决方案四:
我也是一个初学者,刚刚从某个培训机构出来。我有一个想法,但是感觉上有点偏门。既然你用的是object输入输出流,那你可以在每次输入内容前先输入一个对象,这个对象里面记录了你之后要输入东西的大致内容,比如说你要输入一个对象,那就在输入对象之前先输入一个对象,这个对象里说你后面要输入一个对象了,如果你后面要存一组字符串,那就在输入字符串之前存入的对象中说后面是一组字符串有多长占多少字节,当然这些都是随意啦。然后要读内容的时候,就可以每次按照这个对象来去相应的数据。我很少回帖的,请不要喷我
解决方案五:
1.很奇怪楼主为什么会把其它数据和对象数据写在一起。2.你写数据的时候可以写字节流,写的时候注意按类似TCP那样,把对象的字节长度先写入文本(用int),写对象转换的字节码,写文字字节码所占长度(int),写文字。3.读取,先读4byte转换inta,按这个长度a读出对象字节,转换为对象,再读4byte转换intb,按b长度读取后面的字节,转文字。
解决方案六:
怎么不能啊?可以记录对象的大小,然后用字节流skip方法跳过那些字节就可以了嘛