【发布时间】:2021-02-01 06:06:10
【问题描述】:
我有以下:
public class Building implements Serializable {
int buildingID;
String buildingName;
List<Person> personList;
...
}
class Person implements Serializable {
int age;
String name;
byte[] importantData;
...
}
我打算将 Building 序列化为二进制文件。我们可以假设 personList 将包含许多 Person 条目(3GB+)。将来,我计划使用现有的 Building 文件从 personList 中的特定 Person 条目中提取特定的重要数据。目前,对我来说最直接的方法是将文件反序列化回 Building 对象以获取特定的重要数据。但是,由于这个 Building 文件很大,反序列化过程需要一些时间。
我想通过简单地直接从序列化文件中读取数据(跳过反序列化)以更快的方式执行此操作。问题是我不确定如何获取或学习importantData实际存储在文件中的字节偏移值。此外,是否可以在不对序列化的 Building 文件本身进行字节比较的情况下获得此偏移值?
【问题讨论】:
-
你不能使用 Java 对象序列化。它是一种错误的串行格式。没有随机访问。
标签: java serialization deserialization extract offset