запись многих объектов Java в единственный файл

как я могу записать много сериализуемых объектов в единственный файл и затем считать несколько объектов как и, когда необходимый?

11
задан Anupam 12 August 2010 в 17:00
поделиться

3 ответа

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

Сложность наступает, когда вы хотите прочитать «несколько» объектов назад. Как вы узнаете, как найти позицию в файле, которая содержит конкретный объект, который вам нужен? Если вы всегда читаете объекты в том же порядке, в котором вы их написали, с начала файла и далее, это не будет проблемой. Но если вы хотите иметь произвольный доступ к объектам в «середине» потока, вам придется придумать способ определения байтового смещения конкретного интересующего вас объекта.

( Этот метод не имеет ничего общего с синхронизацией или даже с Java как таковой; вам нужно разработать схему, которая будет соответствовать вашим требованиям и среде.)

7
ответ дан 3 December 2019 в 09:18
поделиться

Я бы использовал базу данных плоских файлов (например, Berkeley DB Java Edition ). Просто запишите свои узлы в виде строк в таблице, например:

Node
----
id
value
parent_id
0
ответ дан 3 December 2019 в 09:18
поделиться

Пишущая часть проста. Вы просто должны помнить, что вы должны писать все объекты «сразу». Вы не можете создать файл с сериализованными объектами, закрыть его и снова открыть, чтобы добавить больше объектов. Если вы попробуете, вы получите сообщения об ошибках при чтении.

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

3
ответ дан 3 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: