Domanda

Sto sviluppando una sorta di formato di scambio tra istanze di un'applicazione in modo che l'utente possa salvare le informazioni su file e ripristinarle in seguito. L'intero "formato di scambio" è una singola classe che viene serializzata e scritta su disco.

Come consiglieresti di archiviare informazioni grafiche / sonore all'interno di quella classe? Vorrei evitare di inserire un file .jar.

È stato utile?

Soluzione

È possibile mantenere le risorse archiviate nella classe come array di byte []. Usando ByteArrayInputStream e ByteArrayOutputStream puoi avvolgere le matrici come flussi e usarle per archiviare e recuperare risorse.

Altri suggerimenti

Archivia i dati esattamente come preferisci all'interno della classe ma implementa la serializzazione personalizzata per i dati. Vedi Serializable .

** me **

che ne dici di maggiori dettagli sul tuo caso? il "migliore" il metodo di solito dipende dalla particolare applicazione / utilizzo. l'immagine / il suono provengono dai file? da un ruscello? Si prevede che ciascuna istanza della classe memorizzi immagini separate? Oppure un'immagine può essere condivisa tra istanze diverse?

gsmd

  

le immagini provengono da file, i suoni arrivano   da un ruscello; c'è in realtà un set   di elementi alcuni dei quali possono avere un   immagine allegata; un'immagine non può essere   condiviso


Quali metodi hai provato? Immagino che usare l'interfaccia Serializable sia la strada da percorrere. Ecco due articoli sull'argomento.

In sostanza,

  1. implementa l'interfaccia Serializable nella tua classe
  2. contrassegna i membri che non devono essere salvati nel file come temporanei (membri che contengono dati contestuali come handle di file, connessioni socket, ecc.)
  3. devi personalizzare il modo in cui le tue classi di immagini e suoni scrivono i dati usando, ma implementando:

      

    private void writeObject (ObjectOutputStream out) genera IOException;

         

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top