如何在c/c++中使用gz lib时获得写入的压缩字节数?

Aur*_*gar 2 compression zlib

我有一个问题zlib。如何知道写入的压缩字节数?我正在使用gzwrite(...). 正如我们所知,它返回写入的未压缩(实际)字节数。

我应该使用其他 API 而不是gzwrite()

我在做什么, - 我有一个 .gz 输出文件。当我有一些可用的内容时,我会不断写入文件。我还想跟踪文件,使其不会超过特定大小。我不想使用stat() linux API因为我的写作非常频繁。

建议?

Mar*_*ler 5

zlibgzoffset()为此提供了函数。它返回正在读取或写入的文件中的当前偏移量。

  • 调用 `gzflush()` 强制压缩目前提供的数据并将该数据写入输出。如果使用过于频繁,它将显着降低压缩率,并增加压缩所需的时间。它不应仅用于获取进度信息。压缩需要积累数据以收集历史和统计信息,并且会定期分块写出数据。您只需要耐心等待,您会看到在写入每个块后 `gzoffset()` 返回的值会增加。 (2认同)