您是否可以将Java内置的对象序列化与随机访问文件一起使用?我的动机是我对this question的回答。
答案 0 :(得分:2)
您可以将序列化与随机访问文件一起使用,但您必须自己构建基础结构。没有实际序列化就无法获得序列化的大小。
我假设您要在同一个文件中存储多个序列化对象,因此您需要执行以下操作:
-OR -
答案 1 :(得分:-1)
你可以(使用java的ByteArrayOutputStream和ByteArrayInputStream),但这是一个非常糟糕的主意。 Java的内置对象序列化不是无记忆的。 "The objects must be read back from the corresponding ObjectInputstream with the same types and in the same order as they were written."你可以通过为你编写/读取的每个对象创建一个新的ObjectOutputStream / ObjectInputStream实例来解决这个问题,但这会使你的文件过大。
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
class Test {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(1);
System.out.println(byteArrayOutputStream.size());
byteArrayOutputStream.reset();
objectOutputStream.writeObject(2);
System.out.println(byteArrayOutputStream.size());
byteArrayOutputStream.reset();
objectOutputStream.writeObject(2);
System.out.println(byteArrayOutputStream.size());
byteArrayOutputStream.reset();
objectOutputStream.writeObject(3);
System.out.println(byteArrayOutputStream.size());
byteArrayOutputStream.reset();
objectOutputStream.close();
}
}
输出