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

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

4 ответов


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

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

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


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

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


сделать Object[] для хранения ваших предметов. У меня получилось.


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

Node
----
id
value
parent_id