gpt4 book ai didi

java - 将java对象序列化到文件时是否可以在序列化文件的开头插入一个对象

转载 作者:行者123 更新时间:2023-12-01 04:19:22 24 4
gpt4 key购买 nike

我正在尝试将 N 个对象序列化到一个文件中。每当我序列化对象列表时,我都会在对象序列化之前将要序列化为 int 的对象上的数字写入。反序列化时,我首先读取 int 值,然后我将获得必须调用 ObjectInputStream.readObject() 的次数。

但在这种情况下,N 的值只有在运行时才知道。

FileOutputStream fout = new FileOutputStream("c:\\testfile");
ObjectOutputStream oos = new ObjectOutputStream(fout);

oos.writeInt(/* number of objects here */); <- Can't do as the total is unknown till
last object is encountered

/* done N-times
oos.writeObject(eachString);
*/

oos.close();
fout.close();

我试过了,没用

RandomAccessFile f = new RandomAccessFile("c:\\testfile", "rw");
f.seek(0); // to the beginning
f.writeInt(s.size());
f.close();

Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: 00000003
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:801)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:298)
at testPack.testSerialization.main(testSerialization.java:44)

这个问题我已经回答过了

Java Serialization

我不想将 N 对象写为列表,因为这需要我将完整列表保存到内存中。

所以,我想知道是否有另一种方法可以涉及更改序列化文件的内容(在顶部的某个位置插入 int 值)。

最佳答案

您是否考虑过将对象放入 ArrayList 中并序列化/反序列化 ArrayList 本身?

ArrayList implements Serialisable...

关于java - 将java对象序列化到文件时是否可以在序列化文件的开头插入一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19110645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com