A melhor maneira de armazenar uma imagem / som dentro de uma classe?
-
03-07-2019 - |
Pergunta
Estou desenvolvendo uma espécie de um formato de troca entre instâncias de um aplicativo para que o usuário pode salvar informações de arquivo e restaurá-lo mais tarde. Todo o 'formato de troca' é uma única classe que obtém serializado e gravados no disco.
Como você sugeriria para armazenar informações / som gráfica dentro dessa classe? Eu gostaria de evitar apenas colocando os arquivos em uma .jar.
Solução
Você pode manter seus recursos armazenados na classe como byte [] arrays. Usando ByteArrayInputStream e ByteArrayOutputStream você é capaz de envolver as matrizes como fluxos e usá-los para armazenar e recuperar recursos.
Outras dicas
Guarde os dados exatamente qualquer forma você gosta dentro da classe, mas implementar serialização personalizada para os dados. Consulte Serializable .
** me **
Como cerca de mais detalhes sobre o seu caso? o método "melhor" geralmente depende da aplicação particular / uso. que a imagem / som vindo de arquivos? a partir de um fluxo? É cada instância da classe esperado para armazenar imagens separadas? Ou pode uma imagem ser compartilhada entre instâncias diferentes?
gsmd
imagens vêm de arquivos, sons vêm a partir de uma corrente; há na verdade um conjunto de itens, alguns dos quais podem ter um imagem anexada; uma imagem não pode ser compartilhada
Que métodos você já tentou? Eu acho que usando a interface Serializable é o caminho a percorrer. Aqui está dois artigos sobre o tema.
Basicamente,
- implementar a interface Serializable em sua classe
- membros marca que não devem ser guardados no arquivo como transitórios (membros que contêm dados contextuais como identificadores de arquivo, ligações de socket, etc).
-
você tem que personalizar a forma como a sua imagem e classes de sons escrever dados usando, mas de execução:
writeObject private void (ObjectOutputStream fora) throws IOException;
vazio readObject privada (ObjectInputStream in) throws IOException, ClassNotFoundException;