我想在iPhone应用中使用zlib将文本文件压缩为gzip文件作为测试。我使用下面的代码Zlib压缩放大文件
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比原始文件小?
任何类型的zip压缩将添加一个头来标识格式并提供一个文件名和其他整体结构。对于小文件来说,这种开销完全可能比压缩节省更大。 – 2013-03-24 02:59:34
压缩零大小的文件以查找开销。 – 2013-03-24 03:10:33
@pst我考虑在我的评论中加入这一点,但由于它不适用于这个特定情况,我认为这只是噪音。文本几乎总是可压缩的。 – 2013-03-24 03:31:26