压缩文件

时间:2010-06-03 02:09:08

标签: data-compression

我有一个X字节文件。我想在32Kb的块中压缩它,例如。 有没有我可以这样做的lib?

我使用Zlib for Delphi,但我只能压缩新压缩文件中的完整文件。

Tranks很多, 佩德罗

1 个答案:

答案 0 :(得分:1)

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

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

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

      1. 您丢失了大部分上下文信息(数据之间的相似性)。因此,压缩率会降低。
      2. 您需要稍微多做一些工作。