Вопрос передового опыта: Как сохранить коллекцию изображений и Java-объект в одном файле? Файл читается для визуализации - PullRequest
4 голосов
/ 07 июня 2010

Я делаю Java-программу, которая имеет коллекцию объектов, похожих на флэш-карты. Я храню объекты в jtree, состоящем из defaultmutabletreenodes. К каждому узлу присоединен пользовательский объект, имеющий несколько строковых / собственных параметров типа данных. Однако я также хочу, чтобы у каждого из этих объектов было изображение (типичные форматы, jpg, png и т. Д.).

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

Раньше я не подходил к такой проблеме, поэтому я не был уверен, каковы лучшие практики. Я обнаружил, что XLMEncoder (http://java.sun.com/j2se/1.4.2/docs/api/java/beans/XMLEncoder.html)) является очень эффективным способом хранения моего дерева и информации о собственном типе данных. Однако я не мог понять, как сохранить сами данные изображения внутри файла XML, и я ' Я не уверен, что это возможно, поскольку данные являются двоичными (поэтому ограниченные символы будут недействительными). Моей следующей мыслью было связать хеш-строку вместо изображения в каждом пользовательском объекте, а затем сжать все изображения вместе с хеш строки в качестве имен и дерево, закодированное в XML, в одном и том же сжатом файле. Хотя это выглядело действительно надуманным.

Кто-нибудь знает хороший подход к этому типу проблемы?

спасибо!

Спасибо!

Ответы [ 3 ]

1 голос
/ 07 июня 2010

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

Если память служит, библиотека jar лучше поддерживает записи имен Unicodeчем почтовый пакет , поэтому я бы предпочел его.

0 голосов
/ 07 июня 2010

Вы можете использовать некоторую виртуальную файловую систему, которая хранит свои данные в одном контейнере. Мы разрабатываем и предлагаем одну из таких файловых систем, SolFS , однако сейчас для нее нет привязки Java. Мы выпустим интерфейс Java JNI для SolFS в течение месяца.

0 голосов
/ 07 июня 2010

Возможно, вы захотите использовать базу данных MS JET (файл .mdb) и хранить там все вещи. Это также облегчит изучение и редактирование данных в (например) MS Access.

...