Pregunta

Estoy desarrollando una especie de formato de intercambio entre instancias de una aplicación para que el usuario pueda guardar la información en un archivo y restaurarla más tarde. Todo el 'formato de intercambio' es una clase única que se serializa y se escribe en el disco.

¿Cómo sugeriría almacenar información gráfica / de sonido dentro de esa clase? Me gustaría evitar simplemente poner los archivos en un .jar.

¿Fue útil?

Solución

Puede mantener sus recursos almacenados en la clase como arreglos de bytes []. Al usar ByteArrayInputStream y ByteArrayOutputStream, puede envolver los arreglos como flujos y usarlos para almacenar y recuperar recursos.

Otros consejos

Almacene los datos exactamente como quiera dentro de la clase pero implemente la serialización personalizada para los datos. Consulte Serializable .

** yo **

¿qué tal más detalles sobre su caso? el " mejor " El método generalmente depende de la aplicación / uso particular. ¿La imagen / sonido proviene de archivos? de una corriente? ¿Se espera que cada instancia de la clase almacene imágenes separadas? ¿O se puede compartir una imagen entre diferentes instancias?

gsmd

  

las imágenes provienen de archivos, los sonidos vienen   de una corriente; en realidad hay un conjunto   de elementos, algunos de los cuales pueden tener un   imagen adjunta; una imagen no puede ser   compartido


¿Qué métodos has probado? Supongo que usar la interfaz serializable es el camino a seguir. Aquí hay dos articles sobre el tema.

Básicamente,

  1. implemente la interfaz Serializable en su clase
  2. marque los miembros que no deben guardarse en el archivo como transitorios (miembros que contienen datos contextuales como identificadores de archivos, conexiones de socket, etc.).
  3. tienes que personalizar cómo tus clases de imagen y sonido escriben datos usando, pero implementando:

      

    private void writeObject (ObjectOutputStream out) arroja IOException;

         

    private void readObject (ObjectInputStream in) lanza IOException, ClassNotFoundException;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top