2016-09-21 94 views
1

環顧四周,我發現問題被問到,但不是很好的答案。如果這是一個stackoverflow重複(對不起!)使用zlib附加到壓縮文件

我的目標是有一個zlib壓縮文件,我追加到不同的間隔(如日誌文件)使用C/C++。由於緩衝區大小的限制,我希望避免必須將整個文件保存在內存中以追加新項目。

+1

您的帖子目前的格式太寬泛,不適合Stack Overflow。請訪問[幫助中心](http://stackoverflow.com/help)並閱讀[如何提出一個好問題]部分(http://stackoverflow.com/help/how-to-ask)。 –

+0

@CaptainObvlious:通過簡化並指出一個例子可能是日誌文件,更新了這個問題對你來說不那麼模糊。仍然無法找到與Stackoverflow相匹配的任何東西,並且正在研究Adler的答案。這似乎是現貨。 – goodwince

+1

@CaptainObvlious這個問題對我來說似乎不太寬泛。這非常簡單和具體。 「你如何附加到zlib流?」 –

回答

1

這聽起來像你正在試圖保留一個像壓縮日誌,每次追加少量的數據。爲此,您可以查看gzlog.hgzlog.c瞭解如何執行此操作的示例。

您還可以看看gzappend,它將數據附加到gzip文件。

這些都很容易適應zlib流。

+0

'gzappend'需要'gzip'文件作爲輸入,但是如果我想將數據追加到zlib壓縮文件呢?如果我錯了,請糾正我。 – Sagar

0

馬克阿德勒的答案非常接近我所需要的,但由於已經紮根於zlib庫和資源有限的嵌入式設備中,我被卡住了。

我最後簡單地爲每個數據段附加了一個分隔符(例如:@@ delimiter @@),並且一旦準備好讀取完成的文件(不同的應用程序),它會搜索這些段並創建壓縮的數組對象部分,然後單獨解壓縮。

我仍然認爲阿德勒的答案是正確的,因爲它是對其他程序員更有幫助的有用信息。