代码之家  ›  专栏  ›  技术社区  ›  Benedikt Waldvogel assylias

将文件附加到存档中,而不读取/重写整个存档

  •  5
  • Benedikt Waldvogel assylias  · 技术社区  · 16 年前

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

    您建议使用什么其他存档格式来允许快速追加操作?

    2 回复  |  直到 16 年前
        1
  •  2
  •   msw    16 年前

    这个 ZIP file format 它被设计成允许不完全重写的附件,并且无处不在,甚至在UNIX上也是如此。

        2
  •  2
  •   Stephen C    16 年前

    zip和tar foomats(以及旧的ar格式)允许在不完全重写的情况下附加文件。然而:

    • Java存档类不支持这种操作模式。
    • 如果追加一个现有文件,则文件追加可能会导致存档中文件的多个副本。
    • zip和ar格式有一个目录,在执行文件附加操作后需要重写该目录。标准实用程序在重写目录时会采取预防措施,但理论上,如果附加失败,则可能会以丢失或损坏的目录结束归档。