[英]How to write multiple objects to file?
我想将多个对象写入一个文件,但是问题是我没有一次写入所有对象。 我必须编写一个对象,然后关闭文件,然后也许在某个时间之后,我想向同一文件中添加另一个对象。
我目前正在以FileOutputStream("filename", true)
以便它将对象附加到文件的末尾,而不是覆盖它。 但是我得到这个错误:
java.io.StreamCorruptedException:无效的类型代码:AC
有什么想法可以解决这个问题吗?
谢谢,
一种选择是将文件分段为单独的消息。 当您想编写一条消息时,首先将其序列化为ByteArrayOutputStream
。 然后打开要与DataOutputStream
追加的文件-使用writeInt
长度,然后写入数据。
从流中读取数据时,可以使用DataInputStream
将其打开,然后重复调用readInt
来查找下一条消息的长度,然后再次调用readFully
来读取消息本身。 将消息放入ByteArrayInputStream
,然后从中反序列化。
或者,使用比内置Java序列化更好的序列化格式-我是协议缓冲区的支持者,但有很多可用的替代方法。 内置序列化对于我来说太脆弱了。
您不能将不同的ObjectOutputStreams附加到同一文件。 您将不得不使用其他形式的序列化,或者读入文件并将所有对象以及新对象写出到新文件中。
您需要serialize
/ deserialize
serialize
List<T>
。 看一下这个 stackoverflow线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.