我正在尝试在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()
返回使用const char*
函数从文件中获取的fgets()
。问题是,当我使用它来压缩文件时,它不会压缩它,而是gzip文件比原始文件大。例如,我有一个90字节的文本文件,使用此方法后,gzip的大小为98字节。为什么gzip不比原始文件小?
答案 0 :(得分:6)
GZip格式包括固定大小的标题信息。因为您压缩的数据太少,所以标题信息大于您保存的空间。
90字节通常不值得压缩。
答案 1 :(得分:2)
无论使用何种压缩算法,生成的数据总有可能大于输入,否则将无法对输入位模式的任何组合进行编码。
正如您在特殊情况下所述,与标头开销相比,文件大小非常小似乎是问题所在。
尽管如此,请记住,从来没有保证“压缩”文件的大小会更小。
答案 2 :(得分:1)
"aaaaaaa...."
。尝试更大的数据文件。