我有一些包含大型文件的压缩文件。在这些压缩档案中,有一些需要修改的 "元数据" 文本文件。然而,不可能提取整个压缩文件并重新压缩它。我需要定位压缩文件内的目标文本文件,并进行编辑,可能还要将更改附加到压缩文件中。这个文本文件的文件名始终是相同的,因此可以硬编码。这是否可行?是否有更好的方法?
我有一些包含大型文件的压缩文件。在这些压缩档案中,有一些需要修改的 "元数据" 文本文件。然而,不可能提取整个压缩文件并重新压缩它。我需要定位压缩文件内的目标文本文件,并进行编辑,可能还要将更改附加到压缩文件中。这个文本文件的文件名始终是相同的,因此可以硬编码。这是否可行?是否有更好的方法?
压缩文件中有需要修改的“元数据”文本文件。
然而,无法提取整个压缩文件并重新压缩它。
这是一个很好的教训,当处理庞大的数据集时,将元数据与数据放在同一个位置是一个坏主意。
.zip
文件格式并不特别复杂,肯定可以替换其中的内容。问题在于新数据的大小可能会增加,不再适合旧数据的位置。因此,没有标准程序或工具可以完成此操作。
.zip
的"中央目录"位于文件末尾,压缩数据之后(该格式被优化为附加新文件)。总体概念是:将“中央目录”读入内存,在压缩数据后添加新的修改文件,使用修改文件的新偏移量更新内存中的中央目录,并在修改文件后写回中央目录。(旧文件仍然存在于.zip
中,但不再由“中央目录”引用。)所有操作都将发生在文件末尾,而不会触及存档内容的其余部分。