2010-06-07 33 views
5

我有很多文件需要存儲在單個存檔文件中。我的第一個方法是將文件存儲在gzip壓縮包中。問題是,如果添加單個文件,我必須重寫整個存檔。 我可以擺脫gzip壓縮,但添加文件仍然很昂貴。將文件附加到存檔而不讀取/重寫整個存檔

你會建議哪些其他檔案格式允許快速追加操作?

+0

您是否可以自己編寫容器,或者您是否需要一個衆所周知的算法來使其他人員/系統能夠處理結果文件? – 2010-06-07 23:34:31

+1

我儘量避免寫我自己的容器。一個原因是人們應該能夠打開文件,是的。我還會認爲編寫我自己的容器會導致更多的工作,並且最初是更多的錯誤。 – 2010-06-08 08:26:48

回答

2

ZIP file format被設計爲允許追加而不需要重新寫入並且無處不在,即使在Unix上也是如此。

+1

這個問題http://stackoverflow.com/questions/2223434/appending-files-to-a-zip-file-with-java是高度相關的。我不確定是否有任何(Java)實現允許在不進行全部重寫的情況下進行附加操作。 – 2010-06-08 09:16:55

2

ZIP和TAR格式(和舊的AR格式)允許文件追加而不需要完全重寫。但是:

  • Java歸檔類不支持這種操作模式。
  • 如果附加現有文件,則文件追加可能會導致歸檔中文件的多個副本。
  • ZIP和AR格式有一個目錄需要在文件追加操作後重新編寫。標準實用程序在重寫目錄時會採取預防措施,但從理論上說,如果append失敗,最終可能會丟失或損壞目錄。
相關問題