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 に答える