2016-08-03 67 views
-3

我寫了一個zip類,它使用miniz中的函數和代碼來:打開存檔,關閉存檔,打開存檔中的文件,關閉存檔中的文件,然後寫入到檔案中當前打開的文件。追加到zip存檔中的文件

當前在檔案中打開一個文件會覆蓋它,如果它已經存在。我想知道是否可以將APPEND添加到已關閉的zip存檔中的文件中?

我想說這是可能的,但我將不得不編輯所有其他文件的內部狀態和中央目錄中的偏移量。如果可能的話 - 這是尋找的正確途徑嗎?

注意: 我處理大文件,所以再次解壓縮和壓縮並不理想,也沒有做任何文件的複製。我只想在zip壓縮文件中「打開」一個文件,以繼續將壓縮數據寫入它。

+0

由於在壓縮文件中附加了某些數據,然後壓縮不會導致將某些內容附加到該文件,而是將其更改爲多個文件,所以我認爲這是不可能的。由於不同數據元素之間的相關性,壓縮是可能的,因此相對於某個數據元素是非局部的。 –

回答

1

我只想「打開」zip壓縮文件中的文件,以繼續將壓縮數據寫入它。

壓縮文件不能像文件系統或文件夾一樣工作,您可以在其中更改單個文件。他們保留例如檢查總和,需要申請整個檔案。

所以不,你不能這樣做inplace,但必須解壓縮壓縮文件,應用所做的更改並再次壓縮一切。

+0

如果我可以從檔案中獲取文件統計信息,例如其本地目錄標題,偏移量等等......我不能編輯這些信息並編寫壓縮數據,就好像我正在將新文件寫入存檔? –

+0

@WillM好吧,如果你的壓縮庫API提供了這樣的功能,那就繼續吧。 –

相關問題