将目录压缩为单个文件的方法有哪些

What are ways to compress directory into single file

本文关键字:方法 文件 单个 压缩      更新时间:2023-10-16

不知道该怎么问,所以我会解释一下情况。

我需要存储一些压缩文件。最初的想法是创建一个文件夹,根据需要存储尽可能多的压缩文件,还创建一个保存每个压缩文件数据的文件。

然而,我不被允许创建许多文件,并且必须只有一个。我决定创建一个压缩文件,它有一个关于进一步数据的头,在头之后保留压缩数据。但这个选项有缺点,例如,在创建这样的文件后编辑它需要很长时间,因为即使我想再添加一个小文件,它也必须完全重写。

所以,正如我所想象的,我需要创建具有一些特定属性的文件夹,并在其中创建尽可能多的文件。这可能吗?

我正在为Windows创建一个应用程序,这样我就可以使用任何在Windows上工作的东西,并且我正在用C++进行编码。

注意:需要一个文件,因为例如,它将通过电子邮件发送,并且附加多个文件不是理想的解决方案。

注意:我不需要压缩算法,我需要一些方法来有效地将所有内容存储在单个文件中。

您可以创建一个SQLite数据库或SQL Server Compact Edition数据库(驻留在单个.sdf文件中),并将所有数据存储为BLOB。数据库管理系统应该足够容易,可以与应用程序的其他二进制文件一起部署。

在SQL Server Compact的情况下,我不确定从非托管代码(C++)中使用它有多容易。这在.NET中是很容易的,但我很确定它也可以在C++中完成;不过,这需要一些研究。

至少,这个堆栈溢出问题涉及如何通过OLE DB访问接口从C++连接到这样的数据库。

使用7zip SDK并将所有内容保存在zip文件中怎么样?

http://www.7-zip.org/sdk.html

作为另一种选择,您可以使用tar文件:一个用于自定义标头的文件条目,其中包含其他条目(压缩等)的信息,所有文件都作为tar文件中的条目。我不知道用库函数替换条目是如何工作的(在这里我得到了信息,至少在gnu-tar中是可能的http://www.karkomaonline.com/index.php/2005/03/basic-tar-usage-gnu-tar/linux上的命令行实用程序),但似乎不需要重新创建整个归档就可以了。我认为一开始您必须创建更大的伪条目,以便以后有足够的可用空间,这样这些条目就可以用所有需要的数据替换。