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

时间:2010-06-07 23:22:10

标签: java archive tar

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

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

2 个答案:

答案 0 :(得分:2)

ZIP file format旨在允许在没有完全重写的情况下进行追加,并且无处不在,即使在Unix上也是如此。

答案 1 :(得分:2)

ZIP和TAR fomats(以及旧的AR格式)允许文件附加而不进行完全重写。但是:

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