2017-01-30 5 views
0

файл Когда я сериализовать объект файла (размер которого на жестком диске 3,404,851 байт) с помощью org.apache.commons.lang3.SerializationUtils, таких как:Сериализация и размер

File fileObject = new File(path); 
byte[] fileBuffer = SerializationUtils.serialize(fileObject); 

The fileBuffer.length возвращается 91! Разве это не должно быть 3,404,851?

+3

Утилита только сериализует объект, который указывает на файл, а не весь файл. – mszymborski

+1

Вы не сериализуете содержимое файла. Класс 'File' просто представляет файл на диске; поэтому он, вероятно, содержит имя файла и, возможно, несколько других вещей. – Kevin

ответ

1

Вы сериализуете объект File, а не сам файл.

Объект File содержит всего несколько полей, описывающих файл и его местоположение, а не все содержимое файла.

+0

Как я могу достичь этого в этом случае? – sasuke

+0

1. Это отдельный вопрос 2. Чего вы пытаетесь достичь? – Malt

+0

Я хочу сериализовать содержимое аудиофайла, который я буду кадрировать в UDP-пакеты. – sasuke

1

При взгляде на документацию по сериализации (https://docs.oracle.com/javase/8/docs/api/serialized-form.html#java.io.File) вы можете заметить, что использование сериализации позволяет сохранить путь к файлу (с исходным разделителем, который при необходимости десериализуется), а не его содержимое.

В случае документации Oracle обратитесь к разделу «См. Также» javadoc, чтобы получить ссылку на описание сериализованной формы.