クラス内に画像/音声を保存する最良の方法は?
-
03-07-2019 - |
質問
ユーザーが情報をファイルに保存して後で復元できるように、アプリケーションのインスタンス間で一種の交換形式を開発しています。 「交換フォーマット」全体は、シリアル化されてディスクに書き込まれる単一のクラスです。
グラフィカル/サウンド情報をそのクラス内に保存することをどのように提案しますか?ファイルを.jarに入れることは避けたいです。
解決
リソースをクラスにbyte []配列として保存することもできます。 ByteArrayInputStreamとByteArrayOutputStreamを使用すると、配列をストリームとしてラップし、それらを使用してリソースを保存および取得できます。
他のヒント
クラス内で好きなようにデータを保存しますが、データのカスタムシリアル化を実装します。 シリアル化可能を参照してください。
>**私**
ケースの詳細はどうですか? 「最高」メソッドは通常、特定のアプリケーション/用途に依存します。画像/音はファイルからのものですか?ストリームから?クラスの各インスタンスは別々の画像を保存する予定ですか?または、異なるインスタンス間で画像を共有できますか?
gsmd
画像はファイルから、音は来ます ストリームから;実際にセットがあります 一部のアイテムには 画像添付;画像はできません 共有
どのような方法を試しましたか? シリアル化可能なインターフェイスを使用することが道だと思います。 two 記事。
基本的に、
- クラスにSerializableインターフェイスを実装します
- ファイルに一時的に保存してはならないメンバー(ファイルハンドル、ソケット接続などのコンテキストデータを含むメンバー)をマークします。
-
画像クラスとサウンドクラスでデータを書き込む方法をカスタマイズする必要がありますが、実装は次のとおりです。
private void writeObject(ObjectOutputStream out)throws IOException;
private void readObject(ObjectInputStream in)throws IOException、ClassNotFoundException;