LZ法(詳しいことはいまいちわかりませんが)で圧縮してくれるStreamらしいです。
基本的にはCompressDecoderとセットで使います(性質上、セーブ・ロードなどというコード的にも時間的にも離れている部分かもしれませんが)。
コンストラクタに別のStreamを指定して生成します。Encoderにデータを流し込むとそのStreamに圧縮した内容が書き込まれる、という使い方をします。
src : FileStream("foo.png", "r"); tmp : FileStream("tmp.z", "w"); enc : CompressEncoder(tmp); enc.pour_all(src); src.close(); tmp.close(); dst : FileStream("bar.png", "w"); tmp = FileStream("tmp.z", "r"); dec : CompressDecoder(tmp); dst.pour_all(dec); dst.close(); tmp.close();
tmp.zというファイルを介してEncoder/Decoderで圧縮・展開するプログラムを書いてみました。
pngだとむしろサイズが大きくなってしまいましたが、生のバイナリデータやテキストデータではそれなりにサイズが小さくなりました。
(constructor) | インスタンス生成 |
(destructor) | インスタンス破棄 |
close | ストリームを閉じる |
write | ストリームに書き込む |