gpt4 book ai didi

java - 序列化对象大小?

转载 作者:行者123 更新时间:2023-12-02 08:16:26 26 4
gpt4 key购买 nike

我正在将一个对象写入文件。该对象基本上是文件中的数据 block ,并添加了一些其他信息。我不明白的是,输入文件约为 10 KB,但输出文件约为 20 KB,但我添加的数据仅几个字节。

可能是什么原因?除了数据 block 之外,是否还记录了一些对象标识符、属性并占用了一些空间。

代码片段:

public void writePacket(Packet packet) {
String fileName = packet.getName();
String filePath = dtnStore+fileName ;
ObjectOutputStream out = null;
File file = new File(filePath);
if(!file.exists())
out = new ObjectOutputStream(new FileOutputStream (filePath));
else
out = new AppendableObjectOutputStream (new FileOutputStream (filePath, true));
out.writeObject(packet);
out.flush ();
}

最佳答案

ObjectOutputStream 是一种合理的详细格式。它包含有关如何重建对象(包括其类型)的大量信息。大多数文件格式不包含此信息,这使得它们更小,但对于 Java 开发人员来说使用起来不太方便。

除非您的输入来自 ObjectInputStream,否则文件大小可能会很大。

例如假设您从文本文件中读取一个整数,100\n 是 4 个字节,但是当您将其写入 ObjectOutputSTream 时,它将是 81 个字节长,因为它包含 header 、对象类型、对字段名称等进行编号。

关于java - 序列化对象大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6314683/

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