【发布时间】:2011-12-11 12:26:19
【问题描述】:
我想将多个对象写入一个文件,但问题是我没有一次写入所有对象。我必须写一个对象,然后关闭文件,然后可能一段时间后我想将另一个对象添加到同一个文件中。
我目前正在这样做
FileOutputStream("filename", true)
以便它将对象附加到文件末尾而不是覆盖它。但我得到这个错误:
java.io.StreamCorruptedException:无效类型代码:AC
有什么想法可以解决这个问题吗?
谢谢,
【问题讨论】:
-
如果您不需要随机访问对象,@Jon 的答案是正确的。但是,如果您这样做(即不想阅读所有这些),则需要文件开头(或结尾)的目录,其中包含一些偏移量、一些键和长度。或者只使用单独的文件,现在文件系统(尤其是 ext4)非常擅长有效地组织小文件(尤其是如果你有 SSD :D)
-
谢谢大家,Jon 提出的解决方案看起来很强大,但对我来说太复杂了,所以我想我会满足于您的解决方案(为每个新对象创建单独的文件)或 EJP 的阅读解决方案旧对象,然后将所有旧+新对象写入文件增益。