我在跨网络传输压缩数据时遇到问题。
数据大小约为几百 MB。我的计划是将数据分成 1MB 的 block 并使用 zlib 压缩每个 block ,然后通过网络流式传输压缩数据。在网络的另一端,数据将通过 zlib 解压缩。
我的问题是,由于我对压缩数据进行流式传输,所以不会有关于每个压缩 block 在流中的开始和结束位置的信息。我不确定 zlib 是否可以解压缩这样的压缩数据流。
如果 zlib 可以,请告诉我应该在 deflate/inflate 方法中使用哪种刷新模式?
谢谢!
最佳答案
不清楚为什么要将数据分成 block ,或者为什么需要进行任何特殊的刷新。如果您只是想将数据分块提供给 zlib,这就是通常使用 zlib 的方式。 zlib 不关心您如何向它提供数据——大块、小块、一次一个字节、一个大块等,不会改变压缩结果。
刷新确实会改变压缩结果,根据刷新频率和刷新方式对其进行轻微或显着降级。
当您希望确保在压缩数据的已知边界处完全接收到某些数据部分时,或者如果您希望能够恢复部分数据(如果未接收到全部数据),则使用刷新。
关于streaming - zlib,如何解压缩压缩数据 block 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13357745/