在 Linux 中从内存中压缩文件
我正在开发必须加密和压缩文件的应用程序。因此,我在内存中创建一些数据(文本、二进制或其他数据),对其进行加密并保存到磁盘(文件 1 和文件 2)。我称之为“zip out.zip file1 file2”。
我不想将此文件保存到磁盘,而是立即创建 zip 并从内存中打包这些文件。
我该怎么做呢?
多谢!
I'm working on application that must enrypt and zip files. So, I create some data in memory (text, binary or whatever), encrypt it and save to disk (file1 and file2). The I call e.g. "zip out.zip file1 file2 ".
I do not want to save this files to disk, but immediately create zip and pack these files from memory.
How should I do that?
Thanks a lot!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以尝试使用 zlib 库 来从内存缓冲区创建 zip 文件。
boost:iostreams 也可能是一个不错的选择解决方案。
You could try to use the zlib library to be able to create zip files from memory buffers.
The boost:iostreams could also be a good solution.
对于 zlib,贡献中有一个名为 minizip 的 zip 扩展。对于 minizip,您可以在 作者页面 上找到使用内存缓冲区的代码:
For zlib there is an extension for zip called minizip in the contribs. For minizip you can find code to work with in-memory buffers on the authors page:
注意一定要先压缩再加密。加密数据无法再被压缩。
有趣的是,我找不到一个库来从 C 创建 ZIP 文件。 zlib 只允许 (解压缩 ZIP 存档中的各个条目。
它带有
contrib/minizip
;也许这可以帮助你开始。Note that you must compress first and then encrypt. Encrypted data can't be compressed anymore.
Interestingly enough, I wasn't able to find a library to create ZIP files from C. zlib only allows to (de-)compress individual entries in a ZIP archive.
It comes with
contrib/minizip
; maybe that can get you started.