zlib を Ruby から使うための拡張ライブラリ。 gzip ファイルの読み書きもサポートします。
Ruby/zlib は Ruby と同じ条件で変更/配布することができます。
zlib ライブラリに含まれている雑多な機能を提供するモジュール。 各関数の詳細は zlib.h を参照して下さい。
versionzlib ライブラリのバージョンを表す文字列を返します。
adler32([string, [adler]])string の Adler-32 チェックサムを計算し、 adler を更新した値を返します。 string が省略された場合は、Adler-32 チェックサムの初期値を返します。 adler が省略された場合は、adler に初期値が与えらたものとして 計算します。
crc32([string, [crc]])string の CRC チェックサムを計算し、 crc を更新した値を返します。 string が省略された場合は、CRC チェックサムの初期値を返します。 crc が省略された場合は、crc に初期値が与えらたものとして計算します。
crc_tableCRC チェックサムの計算に用いるテーブルを返します。
以下の例外が定義されています。 それぞれ zlib ライブラリ関数の返すエラーと対応しています。
Zlib::Error
Zlib::StreamEndZlib::NeedDictZlib::DataErrorZlib::StreamErrorZlib::MemErrorZlib::BufErrorZlib::VersionError圧縮データを扱うストリームを表す抽象クラス。
具体的な圧縮/展開の操作は、それぞれサブクラスの
Deflate,
Inflate で定義されています。
Object
total_inストリームに入力されたデータの総バイト数を返します。
total_outストリームの出力したデータの総バイト数を返します。
data_typeストリームに入力されたデータの形式を推測します。 返り値は Zlib::ZStream::BINARY, Zlib::ZStream::ASCII, Zlib::ZStream::UNKNOWN の いずれかです。
adleralder-32 チェックサムを返します。 詳しくは zlib.h を参照して下さい。
closeendストリームを閉じます。 以後、このストリームにアクセスすることはできなくなります。
closed?ストリームが閉じられている時に真を返します。
resetストリームの状態をリセットします。 ストリーム内に残っていたデータは破棄されます。
finishストリームへの入力を終了します。 ストリーム内に残っていたデータを返します。
finished?ストリームへの入力が終了している時に真を返します。
flush_out
ZStream オブジェクトの内部バッファに溜っているデータを
強制的に取り出します。
data_type の返す、
データタイプを表す整数。
入力データを圧縮するストリームのクラス。
deflate(string, [level])string を圧縮します。 level の有効な値は Deflate::NO_COMPRESSION, Deflate::BEST_SPEED, Deflate::BEST_COMPRESSION, Deflate::DEFAULT_COMPRESSION 及び 0 から 9 の整数です。
ちなみに、このメソッドは以下のコードと同じです:
def deflate(string, level) zstream = Deflate.new(level) zstream << string buf = zstream.finish zstream.close buf end
new([level, [windowBits, [memlevel,
[strategy]]]])
圧縮ストリームを作成します。
各引数の詳細は zlib のヘッダーファイルを参照して下さい。
nil の場合はデフォルトの値を使用します。
clone圧縮ストリームを複製します。
deflate(string, [flush])
string を圧縮ストリームに入力します。
圧縮ストリームからの出力を返します。
string が nil の場合はストリームへの入力を終了し、
ストリーム内に残っていたデータを出力します
(finish と同じ)。
入力と出力は必ずしも対応しないことに注意してください。
finish が呼ばれて初めて
全入力と全出力が対応します。
flush には Deflate::NO_FLUSH, Deflate::SYNC_FLUSH, Deflate::FULL_FLUSH のどれかを指定します。詳しくは zlib のヘッダーファイルを参照して下さい。
<< string
deflate と同じですが、
Deflate オブジェクトそのものを返します。
圧縮ストリームからの出力は内部バッファに保存されます。
内部バッファは、deflate,
flush,
finish,
flush_out
メソッドによってフラッシュされます。
flush([flush])
deflate('', flush)
と同じです。flush が省略された時は Deflate::SYNC_FLUSH
が使用されます。このメソッドはスクリプトの可読性のために提供されています。
params(level, strategy)圧縮ストリームの設定を変更します。 詳しくは zlib のヘッダーファイルを参照して下さい。 設定の変更に伴うストリームからの出力は内部バッファに保存されます。
set_dictionary(string)
圧縮に用いる辞書を指定します。
このメソッドは new,
reset を呼び出した直後にのみ
有効です。
詳細は zlib のヘッダーファイルを参照して下さい。
deflate に渡す、
ストリームの出力を制御するための整数。
入力データを展開するストリームのクラス。
Deflate と違い、
このクラスのインスタンスを複製 (clone, dup)
することはできません。
inflate(string)
string を展開します。
展開に辞書が必要な場合には Zlib::NeedDict 例外が発生します。
ちなみに、このメソッドは以下のコードと同じです:
def inflate(string) zstream = Inflate.new buf = zstream.inflate(string) zstream.finish zstream.close buf end
new([windowBits])
展開ストリームを作成します。
引数の詳細は zlib のヘッダーファイルを参照して下さい。
nil の場合はデフォルトの値を使用します。
inflate(string)
string を展開ストリームに入力します。
展開ストリームからの出力を返します。
string が nil の場合はストリームへの入力を終了し、
ストリーム内に残っていたデータを出力します
(finish と同じ)。
入力と出力は必ずしも対応しないことに注意してください。
finished? が真になった時に
初めて全入力と全出力が対応します。
展開に辞書が必要な場合には Zlib::NeedDict 例外が発生します。
<< string
inflate と同じですが、
Inflate オブジェクトそのものを返します。
展開ストリームからの出力は内部バッファに保存されます。
内部バッファは、inflate,
finish,
flush_out
メソッドによってフラッシュされます。
展開ストリームを終了します。Inflate の場合、
圧縮データ内に終了コードを発見した時点でストリームが終了するため
finish を呼ぶ必要は必ずしもありません。
finished? が
真でない時に finish を呼ぶと例外が発生します。
ストリーム内に残っていたデータ (つまり圧縮データの後についていたゴミデータ) を返します。
set_dictionary(string)
展開に用いる辞書を指定します。
このメソッドは Zlib::NeedDict 例外が発生した直後のみ有効です。
詳細は zlib のヘッダーファイルを参照して下さい。
sync_point?undocumented yet...
gzip 形式の圧縮ファイルを扱う抽象クラス。
具体的な読み込み/書き込み操作は、それぞれサブクラスの
GzipReader,
GzipWriter で定義されています。
Object
closeclosed?to_io
IO クラスと同じ。
crc未圧縮データの CRC 値を返します。
comment
gzip ファイルのヘッダーに記録されているコメントを返します。
コメントが存在しない場合は nil を返します。
orig_name
gzip ファイルのヘッダーに記録されている元ファイル名を返します。
ファイル名が記録されていない場合は nil を返します。
os_codegzip ファイルのヘッダーに記録されている OS コード番号を返します。
mtimegzip ファイルのヘッダーに記録されている最終更新時間を返します。
Zlib::Gzip::Error
Zlib::Error のサブクラス。
gzip ファイルを処理している間にエラーが生じた時に発生します。
gzip 形式の圧縮ファイルを読み込むラッパークラス。
IO クラスのインスタンス
(又は IO クラスのインスタンスと同じメソッドを持つオブジェクト) と
関連付けて使用します。
f = open('hoge.gz')
gz = GzipReader.new(f)
print gz.read
gz.close
Enumerable
new(io)
io と関連付けられた GzipReader オブジェクトを
作成します。GzipReader オブジェクトは
io からデータを逐次リードして解析/展開を行います。
io には少なくとも、
IO クラスの read メソッドと同じ動作をする
read メソッドが定義されている必要があります。
ヘッダーの解析に失敗した場合 Gzip::Error 例外が発生します。
ブロックを指定して呼び出した場合は、File::open と同じように
GzipReader オブジェクトを与えられてブロックが実行されます。
ブロックの実行が終了すると、
GzipReader オブジェクトは自動的にクローズされます。
関連付けられている IO オブジェクトまでクローズしたくない時は
ブロック中で引数つきの close
メソッドを明示的に呼び出して下さい。
open(filename)
filename で指定されるファイルを gzip ファイルとしてオープンします。
GzipReader オブジェクトを返します。
その他詳細は new と同じです。
close([flag])
GzipReader オブジェクトをクローズします。
flag が真でない時は、関連付けられている IO オブジェクトの
close メソッドを呼び出します。
関連付けられている IO オブジェクトを返します。
each([rs])each_line([rs])each_byteeofeof?gets([rs])getclinenolineno=postellread([length])readcharreadline([rs])readlines([rs])ungetc(char)
IO クラスと同じですが、
gzip ファイル中にエラーがあった場合
Zlib::Error 例外や
Zlib::Gzip::Error 例外が
発生します。
また、gzip ファイルのフッターの処理に若干注意する必要があります。
gzip ファイルのフッターには圧縮前データのチェックサムが記録されています。
GzipReader オブジェクトは
次の時に展開したデータとフッターの照合を行い、
エラーがあった場合は NoFooter,
CRCError,
LengthError 例外を
発生させます。
rewind
ファイルポインタを
GzipReader オブジェクトが作成された時点に戻します。
関連付けられている IO オブジェクトに seek メソッドが
定義されている必要があります。
unused
gzip フォーマットの解析のために読み込んだ余剰のデータを返します。
gzip ファイルが最後まで解析されていない場合は nil を返します。
os_code メソッドの返す値。
GzipReader::NoFooter
Zlib::Gzip::Error のサブクラス。
gzip ファイルにフッターが無い時に発生します。
GzipReader::CRCError
Zlib::Gzip::Error のサブクラス。
フッターに記録されている CRC 値と
実際に展開したデータの CRC 値が異なる時に発生します。
GzipReader::LengthError
Zlib::Gzip::Error のサブクラス。
フッターに記録されているデータ長と
実際に展開したデータの長さが異なる時に発生します。
gzip 形式の圧縮ファイルを書き出すラッパークラス。
IO クラスのインスタンス
(又は IO クラスのインスタンスと同じメソッドを持つオブジェクト) と
関連付けて使用します。
f = open('hoge.gz', 'w')
gz = GzipWriter.new(f)
gz.write 'jugemu jugemu gokou no surikire...'
gz.close
new(io, [level,
[strategy]])
io と関連付けられた GzipWriter オブジェクトを
作成します。level, strategy は
Deflate::new と同じです。
GzipWriter オブジェクトは
io に gzip 形式のデータを逐次ライトします。
io には少なくとも、
IO クラスの write メソッドと同じ動作をする
write メソッドが定義されている必要があります。
ブロックを指定して呼び出した場合は、File::open と同じように
GzipWriter オブジェクトを与えられてブロックが実行されます。
ブロックの実行が終了すると、
GzipWriter オブジェクトは自動的にクローズされます。
関連付けられている IO オブジェクトまでクローズしたくない時は
ブロック中で引数つきの close
メソッドを明示的に呼び出して下さい。
open(filename, [level,
[strategy]])
filename で指定されるファイルを gzip 圧縮データの書き出し用に
オープンします。
GzipWriter オブジェクトを返します。
その他詳細は new と同じです。
close([flag])
フッターを書き出し、GzipWriter オブジェクトをクローズします。
flag が真でない時は、関連付けられている IO オブジェクトの
close メソッドを呼び出します。
関連付けられている IO オブジェクトを返します。
<<(str)postellputc(ch)puts(obj...)print(arg...)printf(format, arg...)syncwrite(str)
IO クラスと同じ。
flush([flush])
内部バッファをフラッシュします。
flush は Deflate#deflate
と同じです。省略時は Deflate::SYNC_FLUSH が使用されます。
sync= newstate
出力同期モードを設定します。
true にすると圧縮率が著しく低下します。
mtime= time
gzip ファイルのヘッダーに記録する最終更新時間を指定します。
write 等の書き込み系メソッドを
呼んだ後で指定しようとすると
Zlib::Gzip::Error 例外が発生します。
orig_name= filename
gzip ファイルのヘッダーに記録する元ファイル名を指定します。
write 等の書き込み系メソッドを
呼んだ後で指定しようとすると
Zlib::Gzip::Error 例外が発生します。
comment= string
gzip ファイルのヘッダーに記録するコメントを指定します。
write 等の書き込み系メソッドを
呼んだ後で指定しようとすると
Zlib::Gzip::Error 例外が発生します。