Я хочу придумать двоичный формат для передачи данных между экземплярами приложения в форме POF (Обычные старые файлы;)).
Предпосылки:
- должен быть кроссплатформенным
- информация, которая должна быть сохранена, включает в себя один POJO и произвольный byte [] s (фактически файлы, POJO хранит свои имена в String [])
- требуется только последовательный доступ
- должен быть способ проверить согласованность данных
- должен быть маленьким и быстрым
- должен помешать обычному пользователю с архиватором + блокнотом изменять данные
В настоящее время я использую DeflaterOutputStream + OutputStreamWriter вместе с InflaterInputStream + InputStreamReader для сохранения / восстановления объектов, сериализованных с помощью XStream, по одному объекту на файл. Читатели / писатели используют UTF8. Теперь необходимо расширить это, чтобы поддержать ранее описанное. Мое представление о формате:
{serialized to XML object}
{delimiter}
{String file name}{delimiter}{byte[] file data}
{delimiter}
{another String file name}{delimiter}{another byte[] file data}
...
{delimiter}
{delimiter}
{MD5 hash for the entire file}
- Это кажется разумным?
- Что бы вы использовали в качестве разделителя и как бы его определить?
- Как правильно рассчитать MD5 в этом случае?
- Что бы вы посоветовали прочитать по этой теме?
TIA.