我正在写一个文件的对象。该对象基本上是来自文件的数据块,并添加了一些其他信息。我不明白的是输入文件大约是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 ();
}
答案 0 :(得分:2)
ObjectOutputStream是一种合理的详细格式。它包含有关如何重建对象(包括其类型)的大量信息。大多数文件格式都不包含这些信息,这使得它们更小,但对Java开发人员来说不方便使用。
除非您的输入来自ObjectInputStream,否则文件大小可能会非常大。
e.g。假设你从一个文本文件中读取一个整数,说100\n
是4个字节,但当你把它写入一个ObjectOutputSTream时,它将是81个字节长,因为它包括一个标题,对象的类型,数字字段名称等