我知道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