Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Сериализация данных между C++ и Java


Автор: Ground 2.2.2013, 14:41
Доброго времени суток!
У меня есть приложение на плюсах, которое сериализует данные в собственном формате. Мне нужно передать эти данные приложение на Java.
Что я сделал сейчас: определил классы, представляющие сериализованные данные, сделал в них интерфейс Externalizable. Решил проверить, правильно ли все реализовал. Попытался организовать чтение из файла:
Код

FileInputStream fis = new FileInputStream(sdFile);
ObjectInputStream ois = new ObjectInputStream(fis);


На второй строке появляется ошибка:
Код

02-02 11:19:59.236: W/System.err(10106): java.io.StreamCorruptedException
02-02 11:19:59.254: W/System.err(10106): at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:2106)
02-02 11:19:59.254: W/System.err(10106): at java.io.ObjectInputStream.<init>(ObjectInputStream.java:372)
...


Сразу оговорюсь, файл существует, проверил его с помощью sdFile.exists(). Немного погуглил, и выяснилось, что ObjectInputStream ищет заголовок у файла 0xACED, и если не находит - бросает исключение, приведенное выше. Но файл то у меня имеет фиксированный формат, как мне его тогда можно прочитать без лишних проблем?

Автор: Stolzen 3.2.2013, 20:54
Для Externalize джава так же использует свой внутренний формат.
Рекомендую использовать какую-нибудь библиотеку, например, http://code.google.com/p/protobuf/

Автор: powerOn 7.2.2013, 16:48
еще есть Apache Thrift: http://thrift.apache.org/
или выбрать независимый формат сериализации типа json/xml

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)