zlib

zlibを使って楽にzip/unzipできるようにするクラスを作ろう、ってんでこんなの作ってみた。
http://www89.sakura.ne.jp/~janus/distribution/zip.zip
zipper・unzipperともにストリームを意識することなく、ファイル名指定で圧縮/解凍を行えるように設計してある。まぁお手軽に使えるケド細かくエラー処理したいときとかには向いてない感じ。

zipfile_iteratorは我ながら上手くいったなぁ、と思った。けど、イテレータをストリームに流し込むなんてことは普通やらないとも思った。単純にzipファイル内のファイルの情報(ファイル名・サイズ・圧縮率等)をとってくるだけなら問題ないんだけど、解凍とかやるとなるとイテレータにゃ荷が重いな。イテレータを引数にとるextract関数とか実装するのが一番なのかしら?

追記

やっぱりイテレータをストリームに流し込むって勘違いしそうだし、見た目もアレなので素直にextract関数作った。正しいパスワードじゃなかったときの処理もextractでパスワードの正否を返すようにすれば簡単に書けるし。というかパスワードが違うときの処理==エラー処理とするとエライ大変になるしなぁ。何をエラー処理とするか、というのも考えどころだと思った。