Как записать объект в файл в Java без использования сериализации объектов? - PullRequest
1 голос
/ 27 июня 2011

Я хочу записать объект в файл. Но согласно моему исследованию я обнаружил, что это невозможно без сериализации объектов. Другой способ - преобразовать объект в массив байтов, а затем записать в файл. Но для этого также требуется сериализация объекта. Есть ли другой способ записи объекта в файл? Потому что я хочу использовать один и тот же код в Android и Blackberry также. Пожалуйста, помогите мне, я хочу решить эту проблему как можно раньше. Заранее спасибо.

1 Ответ

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

Если вы хотите записать объект в файл, то вы по определению хотите его сериализовать - вот что означает сериализация.Если вы просто ищете способ сохранить данные в файл, который не зависит от механизмов хранения, специфичных для устройства, то вам нужно будет написать собственный код сериализации.Для каждого класса, который вы хотите сохранить в файле, вам нужно сделать следующее:

  1. Написать метод, который сохраняет текущее состояние объекта в некоторой доступной для записи структуре, такой как строкаили байтовый массив
  2. Напишите метод, который преобразует строку или байтовый массив обратно в объект (вероятно, будет проще, если этот метод примет поток в качестве параметра, и создаст новый объект на основеданные в этом потоке)

Например, вы можете сохранить объекты в виде строк XML или JSON или более эффективным способом - лучший способ их хранения в основном зависит от того, какие данные вы храните ичто вам нужно с этим делать.

Хорошей практикой является включение некоторого номера версии, определяющего, какую версию класса вы используете, и его включение в первую очередь при сериализации объекта.Таким образом, при десериализации вы можете проверить этот номер версии и узнать, как он был сериализован.Это упрощает последующее изменение схемы сериализации при сохранении обратной совместимости со старыми файлами.

Если вы просто ищете механизм хранения общего назначения, который не зависит от устройства, вы можете также использовать База данных SQLite - они поддерживаются в большинстве, если не во всех современных мобильных операционных системах.Это будет проще, чем сворачивание собственной сериализации вручную, и, как правило, будет иметь лучшую производительность.

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