Question

Je développe une sorte de format d'échange entre les instances d'une application afin que l'utilisateur puisse enregistrer des informations dans un fichier et les restaurer ultérieurement. L'ensemble du "format d'échange" est une classe unique qui est sérialisée et écrite sur le disque.

Comment suggérez-vous de stocker des informations graphiques / sonores dans cette classe? J'aimerais éviter de simplement mettre les fichiers dans un fichier .jar.

Était-ce utile?

La solution

Vous pouvez conserver vos ressources stockées dans la classe sous forme de tableaux d'octets []. En utilisant ByteArrayInputStream et ByteArrayOutputStream, vous pouvez encapsuler les tableaux sous forme de flux et les utiliser pour stocker et récupérer des ressources.

Autres conseils

Stockez les données exactement comme vous le souhaitez dans la classe, mais implémentez une sérialisation personnalisée pour les données. Voir Serializable .

** moi **

que diriez-vous de plus de détails sur votre cas? le "meilleur" Cette méthode dépend généralement de l’application ou de l’utilisation. l'image / le son provient-il de fichiers? à partir d'un ruisseau? Est-il prévu que chaque instance de la classe stocke des images séparées? Ou une image peut-elle être partagée entre différentes instances?

gsmd

  

les images proviennent de fichiers, les sons viennent   d'un ruisseau; il y a en fait un ensemble   des articles dont certains peuvent avoir un   image jointe; une image ne peut pas être   partagé

Quelles méthodes avez-vous essayé? Je suppose que l'utilisation de l'interface Serializable est la voie à suivre. Voici deux articles sur le sujet.

Fondamentalement,

  1. implémentez l'interface Serializable dans votre classe
  2. marque les membres qui ne doivent pas être enregistrés dans le fichier comme transitoires (membres qui contiennent des données contextuelles telles que les descripteurs de fichier, les connexions socket, etc.).
  3. vous devez personnaliser la manière dont vos classes d’image et de son écrivent les données à l’aide des instructions suivantes:

      

    private void writeObject (ObjectOutputStream out) lève l'IOException;

         

    private void readObject (ObjectInputStream in) lève l'IOException, ClassNotFoundException;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top