Лучший способ хранения изображения/звука внутри класса?
-
03-07-2019 - |
Вопрос
Я разрабатываю своего рода формат обмена между экземплярами приложения, чтобы пользователь мог сохранять информацию в файл и позже восстанавливать ее.Весь «формат обмена» представляет собой один класс, который сериализуется и записывается на диск.
Как бы вы предложили хранить графическую/звуковую информацию внутри этого класса?Я бы не хотел просто помещать в него файлы в формате .jar.
Решение
Вы можете хранить свои ресурсы в классе в виде массивов byte[].Используя ByteArrayInputStream и ByteArrayOutputStream, вы можете обернуть массивы в потоки и использовать их для хранения и извлечения ресурсов.
Другие советы
Храните данные внутри класса так, как вам нравится, но реализуйте собственную сериализацию для данных.Видеть Сериализуемый.
** мне **
как насчет более подробной информации о вашем случае?«Лучший» метод обычно зависит от конкретного применения/использования.изображение/звук поступает из файлов?из ручья?Ожидается ли, что каждый экземпляр класса будет хранить отдельные изображения?Или изображение может быть общим для разных экземпляров?
gsmd
Изображения поступают из файлов, звуки исходят из потока;На самом деле есть набор элементов, некоторые из которых могут иметь прикрепленное изображение;Изображение не может быть разделено
Какие методы вы пробовали?Я думаю, лучше всего использовать интерфейс Serializable.Вот два статьи по теме.
По сути,
- реализовать интерфейс Serializable в своем классе
- помечать элементы, которые не следует сохранять в файле, как временные (члены, которые содержат контекстные данные, такие как дескрипторы файлов, соединения сокетов и т. д.).
вам необходимо настроить способ записи данных вашими классами изображения и звука, используя, но реализуя:
Private void writeObject (ObjectOutputStream out) выдает IOException;
Private void readObject(ObjectInputStream in) выдает IOException, ClassNotFoundException;