zlib gzopen()返回一个压缩文件流。它解压缩文件吗?
zlib gzopen()
返回压缩文件流。zlib gzopen()返回一个压缩文件流。它解压缩文件吗?
gzFile data_file;
data_file = gzopen(filename.c_str(), "r");
其中data_file
是压缩文件流。 我可能错过了zlib文档。但是,这是否解压打开的文件? 或者是gzopen()
能够直接解析gzip文件而不需要 来解压缩它吗?
在此先感谢!
gzopen
不解压缩数据,gzread
解压缩,因为你读它。
我还没有在zlib文档中发现这个事实的简单声明,但是如果你想“证明”它自己创建一个大的(几GB)压缩文件,然后测量gzopen
返回的速度有多快。它“显然”不需要时间来解压缩整个文件。如果你看看gzip压缩是如何定义的,你会发现它的设计是以流的形式来编写和读取的,也就是说你不需要一次解压整个文件。
因此,假设你没有真正存储数据,可以说'gzread'用于将压缩文件打印到标准输出(作为未压缩的文本)。这种程序的峰值内存使用率永远不会达到完全解压缩文件,存储在缓冲区中,然后打印出解压缩数据的程序的峰值内存使用率? –
这是正确的。 –
欢呼,熊兄弟! –
解压缩发生在使用'gz'函数从打开的文件中读取时。 'gz'函数族的全部重点在于它们允许你使用带有C风格接口的压缩文件,就好像它们是未压缩的一样。 – HolyBlackCat