2014-09-20 121 views
1

我有一个巨大的输入文件,兆兆字节(它是gzipped(.gz))。如何在不解压缩的情况下创建并追加到gz文件?

我需要分别读取每一行,并决定是否将其添加到一个新的文件。

输出文件也有望在大小TB的,但小,因为我不会添加的所有文件。

有没有一种方法,要做到这在C++使用标准库?我不想使用提升。那可能吗 ?

+0

您是否检查过技术上是否可以(文件格式明智)追加到gzip文件?如果不是,这不是一个编程问题。 – trojanfoe 2014-09-20 19:20:56

+0

我不知道这是否可能。我知道你可以在不解压文件的情况下读取它(例如:在终端中你可以使用zcat或zless),所以我想你也可以使用C++读取gzip。 – 2014-09-20 19:23:47

回答

0

标准C++库不处理gzip格式。标准的C库也没有。我不知道有关提升。

但你当然可以使用zlib,我相信都带有C++包装,如果使用C是望而生畏。

这不是一般将追加到一个压缩文件,顺便说一个好主意,但它在理论上是可能的。但是你失去了很多压缩,因为算法需要重置,从而失去了上下文。但是,您可以打开一个压缩的流并写入它,因此您不需要将未压缩的文件写入磁盘。我认为这就是你所需要的这个查询。

+0

压缩流是什么意思?什么样的压缩? – 2014-09-20 20:12:47

+1

@john:gzip压缩。压缩流是一种流(io流意义上的流),它在输入时会进行压缩并/或在输入时进行解压缩,以便压缩版本位于磁盘上,而未压缩版本位于内存中。对于C接口,请参阅http://www.zlib.net/manual.html#Gzip。一个C++接口正在推进,但你已经表明你不想使用它。 – rici 2014-09-21 01:31:22

相关问题