0

我有一个 X 字节文件。例如,我想将其压缩为 32Kb 的块。有没有我可以这样做的库?

我在 Delphi 中使用了 Zlib,但我只能在新的压缩文件中压缩一个完整的文件。

很多,佩德罗

4

1 回答 1

1

为什么不使用简单的标头来确定块边界?考虑一下:

  1. 从输入中读取固定数量的数据到缓冲区(比如 32 KiB)
  2. 使用“新创建的”deflate 流(ZLIB 的基础压缩算法)压缩该缓冲区。
  3. 将压缩大小写入输出流
  4. 将压缩数据写入输出流
  5. 转到第 1 步,直到到达文件末尾。

优点:

  1. 即使以多线程方式,您也可以解压缩任何块。
  2. 数据损坏仅限于损坏的块。其余数据可以恢复。

缺点:

  1. 您丢失了大部分上下文信息(数据之间的相似性)。因此,您将获得较低的压缩比。
  2. 你需要做更多的工作。
于 2011-12-24T11:02:05.357 回答