如何在使用gzwrite填充压缩文件时知道它的大小?

时间:2018-02-15 14:34:10

标签: c zlib

我正在使用gzopen("filename", "wb9");将数据写入我使用gzwrite()创建的文件。

gztell()返回写入其中的未压缩数据的偏移量,从而返回字节数。

是否有可能在写入时知道输出文件的压缩文件大小?或者由于压缩算法会有限制吗?

1 个答案:

答案 0 :(得分:1)

  

ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));

     

返回   正在读取或写入的文件中的当前偏移量。此偏移包括   gzip流之前的字节数,例如   追加或使用gzdopen()进行阅读。在阅读时,   offset不包括尚未使用的缓冲输入。此信息   可用于进度指示器。出错时,gzoffset()返回-1。

确保刷新输出...

另一个答案,尝试stat文件,如果你只需要它的大小我看不出gz文件和任何其他文件之间的任何区别

https://linux.die.net/man/2/stat

int stat(const char *path, struct stat *buf);

struct stat {
    ...
    off_t     st_size;    /* total size, in bytes */
    ...
};

确定这会给你所需要的......