登录
首页 >  Golang >  Go问答

更新压缩文件的 Go 操作

来源:stackoverflow

时间:2024-02-29 10:18:26 298浏览 收藏

从现在开始,努力学习吧!本文《更新压缩文件的 Go 操作》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我正在尝试在 Go 应用程序中实现 zip 的更新(-u 标志),但我找不到一种有效的方法来执行此操作,而无需再次重写整个 zip 文件。

当然,我可以从 Go 应用程序中调用 zip -u,但这似乎不合适。

我期望的是我不需要重写整个 zip 文件来添加新文件或更新现有文件。同样重要的是,生成的存档是压缩的,因此我不能使用普通的 tar。如果这种行为可以在 Go 中有效实现,我愿意使用其他压缩格式。


正确答案


标准库的zip包不支持此操作。

凭借对存档格式(如 zip 命令行工具)足够深入的了解,如果更新的文件(压缩后)小于原始文件(压缩后),则可以通过替换来更新 zip 存档中的文件存档的适当部分并更新位于 zip 文件末尾的目录。

如果不小于,则可以将新数据添加到存档末尾,然后在额外数据之后重写目录;这也是添加新文件的方式。

如上所述,标准库包本身不支持此操作,因此您需要找到备用库、包装 C zip 库或执行 zip 实用程序。

有关文件格式的更多详细信息,请参阅 wikipedia entry for the Zip file format

好了,本文到此结束,带大家了解了《更新压缩文件的 Go 操作》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>