【问题标题】:append files to an archive without reading/rewriting the whole archive将文件附加到存档而不读取/重写整个存档
【发布时间】:2011-02-28 22:43:48
【问题描述】:

我有很多文件想要存储在一个存档文件中。我的第一种方法是将文件存储在 gzipped tarball 中。问题是,如果添加了单个文件,我必须重写整个存档。 我可以摆脱 gzip 压缩,但添加文件仍然很昂贵。

您会建议哪些其他存档格式允许快速追加操作?

【问题讨论】:

  • 您是否可以自己编写一个容器,或者您是否需要一个众所周知的算法来使其他人/系统能够处理结果文件?
  • 我尽量避免编写自己的容器。一个原因是人们应该能够打开文件,是的。我还认为编写自己的容器会导致更多的工作,并且最初会出现更多错误。

标签: java archive tar


【解决方案1】:

ZIP file format 旨在允许追加而无需完全重写,并且无处不在,即使在 Unix 上也是如此。

【讨论】:

【解决方案2】:

ZIP 和 TAR 格式(以及旧的 AR 格式)允许在不完全重写的情况下追加文件。然而:

  • Java 归档类不支持这种操作模式。
  • 如果附加现有文件,文件附加可能会导致存档中的文件有多个副本。
  • ZIP 和 AR 格式有一个目录,需要在文件追加操作后重写。标准实用程序在重写目录时会采取预防措施,但理论上,如果追加失败,您最终可能会得到一个包含丢失或损坏目录的存档。

【讨论】:

    猜你喜欢
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多