extbzip3 - bzip3 for Ruby
This document is written in Japanese.
bzip3 の非公式 Ruby バインディングです。
できること
データ形式について
- extbzip3 は 「bzip3 ファイル形式」 を標準で扱います。
利用者は特別な操作や指定を行う必要がありません。
- extbzip3 は 「bzip3 ブロック形式」 を扱うことも出来ます。
Bzip3::BlockProcessor
クラスを使ってください。 - extbzip3 は 「bzip3 フレーム形式」 を扱うことも出来ます。
文字列を圧縮・伸長する特異メソッド
Bzip3::Encoder.encode
または Bzip3::Decoder.decode
にキーワード引数として format: Bzip3::V1_FRAME_FORMAT
を与えてください。
ストリーム指向 API を「bzip3 フレーム形式」に対応させる予定はありません。
つかいかた
導入
事前にシステム上へ bzip3 をインストールしてください。
% sudo gem install extbzip3
単発圧縮・伸長
require "extbzip3"
src = "123456789"
bin = Bzip3.encode(src)
src1 = Bzip3.decode(bin)
ストリーミング圧縮と伸長
require "extbzip3"
File.open("/boot/kernel/kernel", "rb") do |src|
File.open("kernel.bz3", "wb") do |dest|
Bzip3.encode(dest) do |bz3|
buf = ""
bz3.write buf while src.read(123456, buf)
end
end
end
File.open("kernel.bz3", "rb") do |src|
File.open("kernel.1", "wb") do |dest|
Bzip3.decode(src) do |bz3|
buf = ""
dest.write buf while bz3.read(123456, buf)
end
end
end
system "md5 /boot/kernel/kernel kernel.1"
bzip3 フレーム形式による単発圧縮・伸長
require "extbzip3"
src = "123456789"
bin = Bzip3.encode(src, format: Bzip3::V1_FRAME_FORMAT)
src1 = Bzip3.decode(bin, format: Bzip3::V1_FRAME_FORMAT)
しょげん