我有一个大gzip
文件,解压缩速度很慢。如何在不解压缩整个文件的情况下就地删除第一行?
Zip算法使用已解压缩的内容作为以下内容的查找表。我认为,这直接意味着如果删除第一行,它肯定需要重新压缩文件的其余部分,这又意味着需要先将其解压缩。
因此,我相信答案是:不是。
在实际实现zip算法(准确地说是Lempel Ziv压缩算法)的细节中,您会发现存在某些大小的数据窗口。
可以解压缩的即将到来数据的最大长度取决于窗口大小“ ahead”。在已解压缩的数据(“后退”窗口)中,还有一个最大距离可以将数据用作查找。
因此,有可能仅解压缩一部分压缩数据,其大小足以确保其余的压缩数据在其之前不引用任何内容。即是如此之大,以至于压缩数据中的某个点不再存在要删除的引用。然后,您可以重新压缩该部分,而无需删除第一行。
但是,我相信这种方法是您无法解决的。否则,您将提供更多的信息。
所以我想我会坚持:不。
或者至少:
您必须真正了解Zip算法,以至于您可以自己实施它。然后,在要处理的文件中进一步了解算法的精确实现。然后了解正在查看的压缩的精确配置(两个窗口的大小)。
然后花很多力气。
深入了解如何做到这一点超出了这里的答案。
:-)与答案的长度和复杂度相比,看待投票通过的时间,使我想起meta.stackoverflow.com/questions/370115/…