ほむほむzip内検索のメモ書き

「残念、さやかちゃんでした」…じゃなくて、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

というのがあるそうです。「ほむ」だけじゃなくて「ほむ~ん」とか「ほむほむ」とか、色々混ぜると面白いカモ。

カテゴリー: 開発, C# パーマリンク