压缩和解压文件的C++代码

15

我想编写一个程序,将文件夹压缩成.zip文件,或者将.zip文件解压到文件夹中。我认为我需要使用支持这些功能的库,对吗?如果是这样,那么有没有特定的库应该使用呢?我希望在Linux机器(Ubuntu)上用C++编写代码。

谢谢帮助。


是的,您需要一个库。C++语言没有提供zip和unzip操作作为编程结构。 - Steve Guidi
6个回答

11

如果你想以更高级的方式执行此操作,可以使用 system()(或其他启动进程的机制)直接从C++中调用 zipunzip 命令。这些实用程序在Ubuntu中默认可用。


8

我建议使用zlib,它是用C语言编写的,经过多年的大量测试,可以在几乎所有您能想到的平台上进行移植。


5
zlib提供了对压缩流的访问,但不支持.zip文件格式,是吗? - Greg Hewgill
@GregHewgill -- 你是正确的。 - Hot Licks
1
@GregHewgill,基本上不行,但解决方案已随源代码一起分发,最终你会得到所需的一切。 - user827992
@user827992:谢谢,我不知道minizip。 - Greg Hewgill
你可以尝试使用zlib的contribminizip - pepece

8
我建议使用LZMA/7 Zip库。它支持多种压缩格式,并可用于几乎任何类型的(操作系统)环境。该库API使用C编写,您可以轻松地选择所需的内容(仅解压缩、压缩或两者)。它还带有开源许可证,可轻松在任何项目中使用(商业或操作系统)。
我们在许多嵌入式项目中成功地使用了此库。

2
谢谢您的建议,我已经在我的电脑上安装了它,我想写一些代码,是否有在线参考或在线手册可以了解需要包含什么以及我们可以使用哪些函数? - hakuna matata
@aizen92 就我记得来说,README 文件对于弄清楚你需要什么是有帮助的。 - πάντα ῥεῖ
liblzma是否支持解压密码保护的zip文件(使用zip实用程序压缩)? - Titus

6

1
我喜欢它。第一次尝试就为我工作了。 - Prof. Falken

4
尝试使用libzip。虽然我没有使用过它,但它看起来提供了一个非常类似于stdio API的API,用于访问ZIP档案中压缩文件。

-2

编写自己的解压逻辑(使用zlib进行解压缩)并不是非常困难。(我已经做过了。)编写zip可能会更加困难,但是可行。

zip规范可以在这里在线查看。


2
我目前更倾向于不从头开始编写,因为我将在秋季参加有关压缩及其算法的课程,所以我宁愿阅读它而不是实现它,以了解我将要学习的内容,但感谢您提供的规格说明,我一定会仔细阅读。 - hakuna matata
1
@aizen92 -- 啊,但是从头开始编写这样的东西非常有趣。比愤怒的小鸟还要有趣。 - Hot Licks
4
嗯,非常值得怀疑的观点,如果你只需要在项目中补充一些东西,并以尽可能少的努力完成它 ... - πάντα ῥεῖ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接