C语言 如何使用 Zlib 一次压缩多个文件?



我知道minizip可以做到这一点,但这太复杂了。出于某种原因,我只能包括zlib.h.

我尝试根据zpipe.c来做到这一点。我希望输出包含不同文件的.z.gz(包含目录不是必需的(。

我的方式是

deflateInit()->deflateSetHeader()->fread()->deflate()->fwrite()->deflateEnd()

,然后通过以其他方式再次打开output.z来再次执行此操作。结果是 2 个文件被压缩为output.z中的一个文件,这可能不是我想要的。

是否可以用几行代码压缩多个文件?

您可以在基于 zpipe.c 的代码中连接压缩输出。 不要关闭((输出文件。继续附加到它。

串联文件的 gunzip 等效于cat file1 file2。如果你 想要恢复多个文件需要自己取消输出文件 在基于 zpipe.c 的代码中。基本上,继续 fread(( 即使 inflate(( 还了你一个Z_STREAM_END。

这是连接有效的证明

$ echo "this is file 1" > file1
$ echo "this is file 2" > file2
$ gzip file1
$ gzip file2
$ cat file1.gz file2.gz > files.gz
$ rm file1.gz file2.gz
rm: remove regular file 'file1.gz'? y
rm: remove regular file 'file2.gz'? y
$ gunzip files.gz
$ cat files
this is file 1
this is file 2

最新更新