2012-08-05 42 views
0

我有大量的「輸入」數據,我想壓縮到多個bzip2流,而無需將數據寫入多箇中間文件。可以重複調用BZ2_bzBuffToBuffCompress()嗎?

我可以把輸入數據塊到緩衝區中,使用BZ2_bzBuffToBuffCompress()來壓縮緩衝區的bzip2味字節,並與新的數據隨後BZ2_bzBuffToBuffCompress()調用重複,直到我有沒有留下更多的輸入數據?

bzip2 documentation說以下內容:

壓縮以這種方式是一次性事件,與該功能的單一調用來完成。得到的壓縮數據是一個完整的bzip2格式數據流。沒有任何機制可以提供額外的電話來提供額外的輸入數據。如果您想要這種機制,請使用低級界面。

這是否意味着我不能在新填充的緩衝區大小的輸入數據上重新運行BZ2_bzBuffToBuffCompress()?我應該用BZ2_bzWrite()代替嗎?

編輯

我其實是輸出到一個檔案文件,其中可能包含一個或一個以上的bZIP流。

+0

我在閱讀文檔時的理解是,您不能將更多數據添加(追加)到已壓縮的緩衝區,但創建多個單獨的壓縮流或緩衝區是可以的。 – 2012-08-05 13:03:58

回答

1

你可以保持通話BZ2_bzBuffToBuffCompress()與所有你喜歡的新的數據,你會產生什麼,我認爲你說你想要的,這是:

數據,我想壓縮到多個bzip2的流

這正是你會得到的。多個bzip2流。這些流中的每一個都需要單獨解碼。

如果要採取一系列的緩衝區,並作出 bzip2的流了出來,那麼你將需要使用BZ2_bzCompressInitBZ2_bzCompressBZ2_bzCompressEnd

+0

謝謝,我認爲你的第二個建議是我的想法。一旦我驗證了這一點,我會對此進行測試並將您的答案標記爲正確。 – 2012-08-05 21:30:58

相關問題