「残念、さやかちゃんでした」…じゃなくて、zip 内比較をしようと思って C# で扱える zip ライブラリを探してみる。
J’s Memo: C#でZIPファイルの生成
http://beginnerdiver.blogspot.com/2009/01/czip.html
GZipStream クラス (System.IO.Compression)
http://msdn.microsoft.com/ja-jp/library/system.io.compression.gzipstream.aspx
gzip を扱うのであれば、標準で用意されている GZipStream クラスを利用すればよいかな、と思っているわけですが、私がやりたいのは
- windows 上で圧縮された zip 内を検索
- zip 圧縮はいらない。
- zip 解凍はメモリ上でやりたい。
ので、GZipStream クラスでは駄目なのかなぁ。解凍すればよいだけなので、
DotNetZip Library
http://dotnetzip.codeplex.com/
あたりが候補になります。
Ionic Zip Library v1.9.1.6 – Table of Content
http://cheeso.members.winisp.net/DNZHelp/
にあるサンプルコードを見ると、以下のように foreach で ZipEntry オブジェクトを列記できる模様。
1 2 3 4 5 6 7 | using (ZipFile zip = ZipFile.Read(ExistingZipFile)) { foreach (ZipEntry e in zip) { e.Extract(TargetDirectory); } } |
次のように、OutputStream が使えるので、MemoryStream に渡せばメモリ上で操作可能
1 2 3 4 5 | using (ZipFile zip = ZipFile.Read(ExistingZipFile)) { ZipEntry e = zip[ "MyReport.doc" ]; e.Extract(OutputStream); } |
■おまけ
プログラミング言語「ほむほむ」 – ゆろよろ日記
http://d.hatena.ne.jp/yuroyoro/20110601/1306908421
というのがあるそうです。「ほむ」だけじゃなくて「ほむ~ん」とか「ほむほむ」とか、色々混ぜると面白いカモ。