Размер сериализованного объекта? - PullRequest
0 голосов
/ 11 июня 2011

Я пишу объект в файл. Объект в основном представляет собой фрагмент данных из файла с добавлением некоторой другой информации. Я не понимаю, что входной файл занимает около 10 КБ, а выходной файл - около 20 КБ, а к данным я добавляю только несколько байт.

В чем может быть причина? Существуют ли какие-либо идентификаторы объектов, атрибуты также записываются в журнал и занимают некоторое пространство, кроме блока данных.

Фрагмент кода:

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 Ответ

2 голосов
/ 11 июня 2011

ObjectOutputStream - разумный подробный формат.Он включает в себя много информации о том, как реконструировать объект, включая его типы.Большинство форматов файлов не содержат эту информацию, что делает их меньшими, но не столь удобными для использования разработчиком Java.

Если ваш ввод не из ObjectInputStream, размер файла может значительно возрасти.

например, скажем, что вы читаете Integer из текстового файла, скажем, 100\n составляет 4 байта, но когда вы записываете это в ObjectOutputSTream, оно будет иметь длину 81 байт, поскольку оно включает заголовок, тип объекта, нумерацию имен полей и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...