如何将多个对象写入文件?
我想将多个对象写入文件,但问题是我没有一次写入所有对象。 我必须写一个对象然后关闭文件,然后可能在一段时间之后我想将另一个对象添加到同一个文件中。
我目前正在将其作为FileOutputStream("filename", true)
因此它会将对象附加到文件末尾而不会覆盖它。 但我得到这个错误:
java.io.StreamCorruptedException:无效的类型代码:AC
任何想法如何解决这个问题?
谢谢,
您不能将不同的ObjectOutputStreams附加到同一文件。 您必须使用不同forms的序列化,或读取文件并将所有对象和新对象写入新文件。
一种选择是将文件分段为单个消息。 如果要编写消息,请先将其序列化为ByteArrayOutputStream
。 然后打开文件以附加DataOutputStream
– 用writeInt
长度,然后写入数据。
当您从流中读取时,您将使用DataInputStream
打开它,然后重复调用readInt
以查找下一条消息的长度,然后readFully
以读取消息本身。 将消息放入ByteArrayInputStream
,然后从中反序列化。
或者,使用比内置Java序列化更好的序列化格式 – 我是Protocol Buffers的粉丝,但有很多替代品可用。 内置的序列化对我来说太脆弱了。
您需要serialize
/ deserialize
serialize
List
。 看一下这个 stackoverflow线程。