■TZCompressionStreamでデータを圧縮する
ZlibユニットにあるTZCompressionStreamクラスを使うとデータを圧縮することができます。
TZCompressionStreamクラスのコンストラクタは引数に圧縮したデータを書き込むTStream*をとります。
第2引数は圧縮方法です。
#include <ZLib.hpp>
unique_ptr<TFileStream> dest(new TFileStream("C:\\test.dat", fmCreate)); //圧縮したデータの書き込み先
unique_ptr<TZCompressionStream> cs(new TZCompressionStream(dest.get(), Zlib::zcDefault));
Writeメソッドで圧縮するデータを受け取り、圧縮したデータをコンストラクタの引数のTStream*に渡します。
UTF8String utf8 = L"圧縮のテスト圧縮のテスト圧縮のテスト";
cs->Write(utf8.c_str(), utf8.Length());
■TZDecompressionStreamで圧縮されたデータを展開する
ZlibユニットにあるTZDecompressionStreamクラスを使うと圧縮されたデータを復元することができます。
TZDecompressionStreamクラスのコンストラクタは引数に圧縮されたデータを読み込むTStream*をとります。
#include <ZLib.hpp>
unique_ptr<TFileStream> source(new TFileStream("C:\\test.dat", fmOpenRead)); //圧縮されたデータの読み込み元
unique_ptr<TZDecompressionStream> ds(new TZDecompressionStream(source.get()));
Readメソッドは入力ストリームからデータを読み込み、復元します。
__int64 size = ds->Size;
boost::scoped_array<char> buffer(new char[size]);
ds->Read(buffer.get(), size);