ジップしようとしているメモリ内オブジェクトがシリアライズ可能な場合は、これは非常に簡単です。
任意のシリアライズ可能なインスタンスを取得し、byte[]
に設定することができます。私はこれを行うためのユーティリティメソッドがあります。
public static byte[] convertToBytes(Object object) throws IOException {
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos)) {
out.writeObject(object);
out.flush();
return bos.toByteArray();
}
}
あなたはバイト単位で表され、そのオブジェクトを持っていたら、あなたはそれを圧縮するZipOutputStreamを使用することができます。
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
GZIPOutputStream out = new GZIPOutputStream(bos);) {
out.write(bytes);
out.finish();
byte[] compressed = bos.toByteArray(); // this is my compressed data
}
(私は単純化のためにここにGzipを使用しますたとえば、複数のエントリを持つzipを作成することもできます)。
書籍、ツール、ソフトウェアライブラリ、チュートリアル、その他のオフサイトリソースをお勧めするか、見つけようとする質問は、オピニオン回答と迷惑メールを引き付ける傾向があるため、スタックオーバーフローに関するトピックです。代わりに、問題を説明し、それを解決するためにこれまでに何が行われているかを記述します。 – JFPicard
一時フォルダを作成し、ファイルを保存し、圧縮して、操作後に削除することができます。 – Lino