如何将二进制数据写入压缩文件
How to write binary data to a compressed file
我有一些财务数据,我正在C++处理。我以简单的二进制格式存储它,因为它需要更少的资源并且速度很快,但是我想为文件添加压缩。我猜我将受到 IO 约束,因此压缩不会在处理速度方面花费我太多。
我不知道如何进行压缩,因为我是一名学者,而不是真正的程序员。我真的可以用一些手握住这个。
I have my data in a structure like this:
struct TradesBin {
int ttim;
int prc;
int siz;
short int g127;
short int corr;
char cond[2];
char ex[1];
}__attribute__((packed));
我可以按如下方式写入二进制文件:
ofstream fout(outfile.c_str(), ios::out | ios::binary);
fout.write((char *) &tbin, sizeof(TradesBin));
其中 tbin 填充了交易箱数据。
我现在如何为这些文件添加压缩? 我只模糊地听说过ZLO,Bzip2,zlib和Boost.IOStreams之类的东西。 非常感谢您的指导和建议!
谢谢!
Zlib 允许你这样做,但它只提供了一个普通的 C 接口。简而言之,你做到了
gzFile fp = gzopen(fname.c_str(),"wb");
gzwrite(fp, (void*) (&vec[0]), sizeof(TradesBin)*nelem);
gzclose(fp);
例如,vec
是TradesBin
结构的std::vector<TradesBin>
。
相关文章:
- 浏览压缩文件与游览解压缩它们
- 如何在视觉工作室中使用C++解压缩压缩文件 (.zip)
- 霍夫曼解码压缩文件
- 如何以非阻塞方式压缩文件
- 从本地代码访问apk中的压缩文件(从zip中读取zip)
- 如何将多个协议缓冲区的消息写入可附加的压缩文件中?
- 使用结构 c++ 读取压缩文件 Gzread
- 使用Qt qUnCompress功能解压缩文件
- 如何将二进制数据写入压缩文件
- 使用boost iostreams将数组读写到压缩文件中
- 压缩和解压缩文件 C++
- 在C++中,如何在使用gzstream编写压缩文件时检查错误
- 对解压缩文件(popen)的权限被拒绝
- 无法打开压缩文件
- Qt-包括DLL和压缩文件
- 如何检查 zip 文件或压缩文件是否存在
- 如何压缩文件夹使用 lzma sdk
- 在霍夫曼压缩后将代码表存储在压缩文件中,并从此表构建用于解压缩的树
- c++中的压缩文件IO
- 通过套接字发送和接收压缩文件