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


Автор: can4ec 20.5.2007, 19:05
Здравствуйте!!! У меня такой вопрос.  В одном файле (после сериализации) лежат как пример 4 объекта. В другом методе я произвожу десериализацию и хочу вынуть из этого  файл  все 4 свои объекта и записать их в Лист. Как мне это сделать?
Просто когда я десериализирую вот так:
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);
            memoryDao = (Dao) ois.readObject();
мне вынимается токо один объект , а как остальные вынуть и записать в тот же Лист.
P.S. Другие варианты сериализации не предлагать , у меня задание просто  вытащить не один объект из файла.

Автор: danco31 20.5.2007, 23:11
readObject() и читает один объект - так и метод назван. Посему, если объекты в файл складывались (писались) просто один за одним,
то и читай их несколькими вызовами readObject() - в цикле или как нравится. И каждый прочитанный в List добавляй.

Автор: can4ec 21.5.2007, 00:51
Цитата(danco31 @ 20.5.2007,  23:11)
readObject() и читает один объект - так и метод назван. Посему, если объекты в файл складывались (писались) просто один за одним,
то и читай их несколькими вызовами readObject() - в цикле или как нравится. И каждый прочитанный в List добавляй.

как мне их прочесть в цикле если я даже не знаю скоко у меня объектов в файле.

Автор: RebornCrusader 21.5.2007, 07:36
При использовании List размера знать не надо!
Берёшь http://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html.
Читаешь до конца файла, и делаешь list.add() для каждого. Если так хочется массив, есть метод toArray().
Или при сериализации пишешь сразу как объект массив или список, и читаешь его одним вызовом. Как он там на байты разложится - не твоя проблема.

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