我正在使用Zlib的Minizip程序。我正在嘗試將文件添加到當前的zip文件中。我發現我可以使用該函數附加zip文件:minizip追加到文件
extern zipFile ZEXPORT zipOpen64 OF((const void * pathname,int append));
附加設置爲2.但是,這不會覆蓋zip文件內的文件,而只是將文件添加到zip的末尾,而不管它們是否已經存在。有沒有什麼辦法解決這一問題?我想要選擇只替換較舊的文件和/或覆蓋所有文件。
我正在使用Zlib的Minizip程序。我正在嘗試將文件添加到當前的zip文件中。我發現我可以使用該函數附加zip文件:minizip追加到文件
extern zipFile ZEXPORT zipOpen64 OF((const void * pathname,int append));
附加設置爲2.但是,這不會覆蓋zip文件內的文件,而只是將文件添加到zip的末尾,而不管它們是否已經存在。有沒有什麼辦法解決這一問題?我想要選擇只替換較舊的文件和/或覆蓋所有文件。
minizip庫當前不支持將文件添加到zip歸檔文件以外的其他任何內容。它不支持刪除或更新存檔中的文件。
這從minizip網報價可能會幫助您:
伊萬A. Krestinin寫的如何刪除zip壓縮包文件的small example ...
您可以結合刪除操作通過添加操作來實現歸檔文件替換。上面示例代碼的缺點是它需要在磁盤上創建一個臨時zip文件。
非常感謝您的幫助我能夠脫離示例並讓我的程序正確添加文件。 – Megan 2012-08-14 17:24:51
作爲一項基本措施,您可以緩存zip的文件條目名稱。當您嘗試向zip添加新文件時,您可以看到它的文件名是否可以在緩存中找到,只有在未找到文件名時才添加文件。顯然,每次新文件實際添加時都需要更新緩存。 – 2013-04-19 14:20:06