我想在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