我尝试在 iPhone 应用程序中使用 zlib 将文本文件压缩为 gzip 文件作为测试。我正在使用以下代码
const char *s = [[Path stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@".%@", [Path pathExtension]] withString:@".gz"] UTF8String];
gzFile *fi = (gzFile *)gzopen(s, "wb");
const char *c = readFile(Path.UTF8String);
gzwrite(fi, c, strlen(c));
gzclose(fi);
其中 readFile()
返回使用 fgets()
函数从文件中获取的 const char*
。问题是,当我用它来压缩文件时,它不会压缩文件,而是 gzip 文件比原始文件大。例如,我有一个 90 字节的文本文件,使用此方法后,gzip 的大小为 98 字节。为什么 gzip 不小于原始文件?
最佳答案
GZip 格式包含固定大小的 header 信息。由于您压缩的数据非常少,因此 header 信息比您节省的空间要大。
90 字节通常不值得压缩。
关于c++ - Zlib压缩放大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15594669/