序列化对象大小?

时间:2011-06-11 07:23:09

标签: java serialization object

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

可能是什么原因?是否存在一些对象标识符,还记录了属性并占用了与数据块相隔一些空间。

代码段:

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 ();
}

1 个答案:

答案 0 :(得分:2)

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

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

e.g。假设你从一个文本文件中读取一个整数,说100\n是4个字节,但当你把它写入一个ObjectOutputSTream时,它将是81个字节长,因为它包括一个标题,对象的类型,数字字段名称等